如果数组 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/