0
我想出了這個解決方案,將一個字符串與一個對象數組進行比較。但是,我不認爲這是最好的解決方案。任何關於如何使這個函數對於大量對象更好的建議?將字符串與對象數組進行比較
var a = "blAh";
var b = [{
"tag": "tag1",
"icons": ["blah"]
}, {
"tag": "tag2",
"icons": ["Blah", "apple", "banana", "bLaH"]
}];
// Desired output "tag1, tag2"
function getTitle(tags, icon) {
let arr = [];
for (var i = 0; i < tags.length; i++) {
tags[i].icons.forEach(elem => {
if (icon.toLowerCase() === elem.toLowerCase()) {
if (!arr.includes(tags[i].tag)) {
arr.push(tags[i].tag);
}
}
});
}
return arr.join(', ');
}
console.log(getTitle(b, a));
你可以做'圖標= icon.toLowerCase()'進入循環前,但是你的實際問題是什麼?使用索引可以大大提高查找速度,但構建索引是額外的開銷。你也可以創建一個存儲值的索引,而不是'!arr.includes(tags [i] .tag)''''''''''''''''''''''''! – RobG
我猜想唯一的改進就是在函數的開頭部分放置'icon.toLowerCase()'(將其存儲在一個變量中,這樣您就不會一遍又一遍地調用它)。如果你正在尋找一種可讀性而不是性能的改進,那麼使用'reduce','filter'和'concat',... –
@ ibrahimmahrir-這是它的觀點:循環對性能非常好,並且非常易讀。儘管數組額外可以減少鍵入。 ;-) – RobG