我要求帮助解决,看起来像这样重命名的字符串数组的问题:函数执行它应该如下重命名重复在一个数组的JavaScript
["a(1)","a(6)","a","a","a","a","a","a","a","a","a","a"]
后:
["a(1)","a(6)","a","a(2)","a(3)","a(4)","a(5)","a(7)","a(8)","a(9)","a(10)","a(11)"]
没有重复的空数组和数组应该保持不变。
我的想法是来填充键/值对一个空的对象,然后只需将它们推到一个新的数组:
function renameFiles(arr){
var itemsObj = {};
var count = 1;
for (var i = 0; i < arr.length; i++){
itemsObj[arr[i]] = count;
// if the key present, rename the array item and add it to the
// itemsObj
if (arr[i] in itemsObj){
itemsObj[arr[i] + '(' + (i - (i - 1)) + ')']
}
}
console.log(itemsObj)
// once the itmesObj is set, run the loop and push the keys to the
// array
return arr;
}
var array = ["a(1)","a(6)","a","a","a","a","a","a","a","a","a","a"]
renameFiles(array);
的问题是,itemsObj
不得到与重复键填充。应该有一些其他的方法可以处理这个任务。我是初学者,可能不知道这种方法。
嗯。你每天学习新的东西。不知道你可以在三元运算符内部增加。 – Skam
@Skam - 你可以增加得很好,但依靠分配的结果,正如我在上面所做的那样,在很多情况下应该避免,至少在我看来。我在这里做的是为了避免整个if/else混乱检查密钥等,我认为这很好,因为在这种特定情况下不应该有任何问题*。 – adeneo
@adeneo你能解释一下这行'var c = x count吗? count [x] = count [x] + 1:count [x] = 1;'我还不熟悉这种风格。 – Yunielf