我在JS中有這個功能
function getMap(objectList) {
const objectMap = new Map();
IDS.foreach(id => {
const attribute = objectList.find(object => object.getId() === id);
if (attribute) {
objectMap.set(id, attribute);
} else {
objectMap.set(id, null);
}
}
這是一個嵌套回圈,因為在 for 回圈中查找。這怎么能簡化呢?如果嵌套回圈不能簡化,其他部分可以簡化嗎?
uj5u.com熱心網友回復:
假設物件 ID 是唯一的,看起來您真正需要做的就是getId事先呼叫每個物件。如果您愿意,可以使用條件運算子代替if/ 。else
function getMap(objectList) {
const objectsById = new Map(
objectList.map(object => [object.getId(), object])
);
const objectMap = new Map();
for (const id of IDS) {
objectMap.set(id, objectsById.get(id) || null);
}
}
uj5u.com熱心網友回復:
您可以創建一個陣列,其中null包含每個 ID 的條目,然后是您在 中實際具有值的條目objectList,并將該陣列傳遞給Map建構式:
function getMap(objectList) {
return new Map([
...IDs.map(id => [id, null]),
...objectList.map(object => [object.getId(), object])
]);
}
uj5u.com熱心網友回復:
使用帶有簡單回呼的本機代碼
const result = (IDS || []).map(function(id, idx, arr) {
const pos = (objectList || []).findIndex(object => object.getId() === id);
const output = [];
output[id] = (pos >= 0 ? objectList[pos] : null);
return output;
});
希望這會有所幫助... ;D
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/496308.html
標籤:javascript
上一篇:如何在收到的JSON資料中換行
下一篇:如何只讀取xml屬性的第一葉
