我要求幫助解決,看起來像這樣重命名的字符串數組的問題:函數執行它應該如下重命名重複在一個數組的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