第一个数组:
var products_cart = [1, 2, 2]; (these are the products_id's)
第二个数组:
var cart_details =
[{
product_id: 1,
product_name: 'product love',
category_name: 'love'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
}]
我想循环遍历数组 products_cart 的元素,并使用 products_cart 中的 Product_id 来渲染 cart_details 中的详细信息(我想循环遍历它们),这怎么可能?
编辑:
我想你们中的一些人误解了我的意思,我基本上希望它呈现这样的效果:
[{
product_id: 1,
product_name: 'product love',
category_name: 'love'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
}
]
我的错误,我不够清楚。
假设 products_cart 的值为产品 id 值,那么您可以尝试以下操作:
var products_cart = [1, 2, 2];
var cart_details = [{
product_id: 1,
product_name: 'product love',
category_name: 'love'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
}
]
for (var i=0, max=products_cart.length; i < max; i++) {
for (var j=0, maxi = cart_details.length; j < maxi; j++) {
if ( products_cart[i] == cart_details[j].product_id) {
console.log( "product id: " + cart_details[j].product_id);
console.log("product name: " + cart_details[j].product_name);
console.log("category name: " + cart_details[j].category_name,"\n\n");
}
}
}
您可以在循环 ids 数组时使用 find():
let products = [];
products_cart.forEach(id => {
let product = cart_details.find(detail => detail.product_id === id);
if (product) {
products.push(product);
}
});
var products_cart = [1, 2, 2];
var cart_details = [{
product_id: 1,
product_name: 'product love',
category_name: 'love'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
}];
products_cart.forEach(function(id){
cart_details.forEach(function(detail){
if(detail.product_id === id){
console.log(detail);
}
});
});
我建议做的是用
products_cart
循环遍历 .forEach()
,然后用 cart_details
检查 Object.keys()
的键,并循环遍历它们。然后你可以简单地检查两者是否匹配。
然后,您就拥有了
product_id
中具有 products_cart
的所有对象的集合,并且可以随意处理它们。
以下示例只是将对象记录回给您:
var products_cart = [1, 2, 2];
var cart_details = [{
product_id: 1,
product_name: 'product love',
category_name: 'love'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
},
{
product_id: 3,
product_name: 'NOT IN ARRAY products_cart',
category_name: 'SHOULD NOT BE SHOWN'
}
]
products_cart.forEach(function(product) {
Object.keys(cart_details).forEach(function(key) {
if (product === cart_details[key].product_id) {
console.log(cart_details[key]);
}
});
});
我还添加了第三个产品,以证明只有
products_cart
中的产品才会在条件中显示。
希望这有帮助! :)
需要清单吗?我认为使用 json 而不是列表。
var products_cart = [1, 2, 2];
var cart_details =[
{
product_id: 1,
product_name: 'product love',
category_name: 'love'
},
{
product_id: 2,
product_name: 'product birthday love',
category_name: 'birthday'
}];
var new_cart_details = {};
// changed list to josn
cart_details.map( item => {
new_cart_details[item.product_id] = {
product_name: item.product_name,
category_name: item.category_name
}
});
products_cart.map( item => {
console.log(new_cart_details[item])
});