循环通过另一个数组内的数组

时间:2017-11-12 22:48:19

标签: javascript arrays

第一个阵列:

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'
}
]

我的错误,我不够清楚。

5 个答案:

答案 0 :(得分:0)

我建议您使用 .forEach() 循环products_cart,然后使用 Object.keys()检查cart_details的键,并循环遍历它们。然后你可以简单地检查两者是否匹配。

然后,您拥有product_idproducts_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中的产品才会显示在条件中。

希望这有帮助! :)

答案 1 :(得分:0)



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);
    }
  });
});




答案 2 :(得分:0)

您可以在循环访问ids数组时使用find()

let products = [];

products_cart.forEach(id => {
    let product = cart_details.find(detail => detail.product_id === id);

    if (product) {
       products.push(product);
    }
});

答案 3 :(得分:0)

你需要清单吗?我认为使用json而不是list。

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])
});

答案 4 :(得分:0)

假设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");
      }
    
    }
  }