javascript - 在 JavaScript 中用 map 方法替换 for 循环

标签 javascript arrays function dictionary refactoring

我有这个正在运行的代码...

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/

相关文章:

javascript - JavaScript 中带有全局标志的正则表达式

javascript - 窗口大小jquery错误

javascript - ng-options 选择默认值

javascript - 有没有办法将变量从 ui.router 传递给 Controller ​​?

javascript - 调用随机函数 Javascript,但不是两次相同的函数

javascript - 尝试在 javascript 中使用循环时出错,获取 "undefined"

python - 我可以在 python 中将元组放入数组中吗?

c++ - 动态数组和重复值

javascript - 从 JS 函数中获取函数参数,该函数参数是字符串

c - 我应该在 scanf() 中同时包含 fflush(stdin) 和空格,还是只包含其中之一就足够了?