作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写循环遍历数组“productsArray”并将其与我的 productPropertyArray 进行匹配以提取匹配信息的代码。
但是 productsArray 是数组中的一个数组,其中包含一个带有数据的对象。我的问题是如何遍历两个数组然后返回匹配的数据。
当前函数:
var pList = productsArray
if (productPropertyArray.length === 0 || productsArray.length === 0) return [];
for (var i = 0; i < pList.length; i++) {
for (var j = 0; j < pList[i].length; j++) {
if (pList[i][j] === productPropertyArray) {
return productPropertyArray;
} else {
continue;
}
}
}
return [];
};
pList 示例:
productsArray = [
[{"sku" : "131674"},
{"sku" : "84172"}],
[{"productID" : "1234"}
,{"productID" : "12345"}],
[{"test": 1},{"test": 1}],
[{"test": 1},{"sellAlone": false,"test": 1}],
[{"test": 1}],
[{"sellAlone": false,"test": 1}]
];
productPropertyArray 的示例:(它的一个参数被以下替换)
productSKUArray = [
"00544MF24F575",
"131674",
"84172"
];
productPropertyArray
只是函数中的一个参数,由 productSKUArray
代替。设置如下所示:function(productProperty, productPropertyArray, productsArray) {
productProperty
只是一个包含sku或productID的字符串 任何想法表示赞赏。谢谢。
最佳答案
检查一下:
http://jsfiddle.net/v9d7bjms/2/
function find() {
var productsArray = [
[{"sku" : "131674"},
{"sku" : "84172"}],
[{"productID" : "1234"}
,{"productID" : "12345"}],
[{"test": 1},{"test": 1}],
[{"test": 1},{"sellAlone": false,"test": 1}],
[{"test": "00544MF24F575"}],
[{"sellAlone": false,"test": 1}]
],
pList = productsArray,
productSKUArray = [
"00544MF24F575",
"131674",
"84172"
];
// All arrays matching your productsSKUArray
var findings = productsArray.filter(function (productProperty) {
// .some returns true after finding first matching element (and breaks the loop)
return productProperty.some(function (obj) {
var keys = Object.keys(obj);
// We need to get all the "values" from object so we interate over
// the keys and check if any value matches something from productSKUArray
return keys.some(function (key) {
// Check if value exists in productsSKUArray
return productSKUArray.indexOf(obj[key]) > -1;
});
});
});
return findings;
}
console.log(find());
.filter
将返回所有包含对象的数组,这些对象的值来自 productSKUArray
。
参见 Array.prototype.filter , Array.prototype.some和 Array.prototype.indexOf供方法引用。
关于javascript - 尝试遍历包含对象数组的数组,以匹配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26185135/
我是一名优秀的程序员,十分优秀!