javascript - 如何比较数组并创建与数组 a 匹配的新数组?

标签 javascript arrays algorithm

如果数组 b 包含数组 a 的字符串值,我想匹配两个数组 我想创建新数组,下面的代码将所有对象从数组 b 中推送出来。我怎样才能只推送匹配的对象?

控制键

 var a = ["standard","industry","4578595"]
 var b = [{file:"server.log",value:"lorem ipsum industry standard 4578595"}, {file:"server.log",value:"lorem ipsum industry standadr"},{file:"server.log",value:"lorem ipsum industry"}];
 var finalyArray = [];
 function compareArrays() {   
     for (i = 0; i < a.length; i++) {
         for (z = 0; z < a.length; z++) {
             if (a[i] === b[z]) {
                 finalArray.push(b[z]);
                 console.log(finalArray); 
             }
         }
     }
}

compareArrays();

最佳答案

无需使用嵌套循环和正常迭代。

数组过滤更干净,非常适合这个:

const a = ["standard","industry","4578595"]
const b = [{file:"server.log",value:"lorem ipsum industry standard 4578595"}, {file:"server.log",value:"lorem ipsum industry standadr"},{file:"server.log",value:"lorem ipsum industry"}];

const matchingCondition = ({ itemB, itemA }) => itemB.value.includes(itemA);

// filter all items from B that satisfy a matching condition with at least one item from A
const matches = b.filter(
  itemB => a.some(
    itemA => matchingCondition({ itemB, itemA })
  )
);

console.log(matches);

关于javascript - 如何比较数组并创建与数组 a 匹配的新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44463378/

相关文章:

c - c语言中的memset函数

c# - 将字节数组上传到 HTTP 服务器

bash - 将 RGB 转换为 8 位

javascript - CSS 显示内联 block 并用元素填充所有空间

javascript - 从 Javascript 逻辑派生的 Java 代码无法正常工作

javascript - ESLint 建议将 for.. 包装起来并使用 Object.{keys,values,entries}

javascript - 无法在 Javascript html 中单击按钮时调用函数

java - 使用 HTTP Get 发送数组

algorithm - 使用仿射成本优化笛卡尔请求

algorithm - 二维数组,所有值都是相邻的