我有这个正在运行的代码...
var allSummaries = [ {id: "1", name: "Example1"}, {id: "2", name: "Example2"}, {id: "3", name: "Example3"}, {id: "4", name: "Example4"}, {id: "5", name: "Example5"}, {id: "6", name: "Example6"}, {id: "7", name: "Example7"}, {id: "8", name: "Example8"}, {id: "9", name: "Example9"}, {id: "10", name: "Example10"}, ];
var uniqueSummaries = ["4","6","9"];
function extractSpecificSummaries(arr1, arr2) {
var summariesBasedOnIDs = [];
for (var i = 0; i <= arr1.length - 1; i++) {
for (var x = 0; x <= arr2.length -1; x++) {
if (arr1[i].id == arr2[x]) {
summariesBasedOnIDs.push(arr1[i]);
}
}
}
return summariesBasedOnIDs;
}
var summaries = extractSpecificSummaries(allSummaries, uniqueSummaries);
但我想通过用 map 方法替换 for 循环来使其看起来更好。我知道有一种更简单的方法来重构这段代码。有人知道如何做到这一点吗?
谢谢!
最佳答案
我会使用 filter 的组合和 some Array.prototype 方法:
const result = allSummaries.filter(i => uniqueSummaries.some(u => u === i.id));
console.log(result); // [{id: "4", name: "Example4"}, {id: "6", name: "Example6"}, {id: "9", name: "Example9"}]
关于javascript - 在 JavaScript 中用 map 方法替换 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48160673/