Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript如何映射两个不同的对象数组并有条件地返回一个数组_Javascript - Fatal编程技术网

JavaScript如何映射两个不同的对象数组并有条件地返回一个数组

JavaScript如何映射两个不同的对象数组并有条件地返回一个数组,javascript,Javascript,您好,我需要帮助在下面的示例数组中动态创建新产品,而不知道其他两个数组中有什么 更多说明: 我想查查 products = [ { id: 1, name: 'product 1' , liked: false }, { id: 2, name: 'product 2' , liked: false }, { id: 3, name: 'product 3' , liked: false },

您好,我需要帮助在下面的示例数组中动态创建新产品,而不知道其他两个数组中有什么 更多说明:

我想查查

products = [
  {
    id: 1,
    name: 'product 1' ,
    liked:  false
  },
{
    id: 2,
    name: 'product 2' ,
    liked:  false
  },
  {
    id: 3,
    name: 'product 3' ,
    liked:  false
  },
  {
    id: 4,
    name: 'product 4' ,
    liked:  false
  },
  {
    id: 5,
    name: 'product 5' ,
    liked:  false
  },

]
likedProducts = [
   {
    id: 1,
    name: 'product 1' ,
    liked:  true
  },
{
    id: 2,
    name: 'product 2' ,
    liked:  true
  },
  {
    id: 3,
    name: 'product 3' ,
    liked:  true
  },

]
if proucts[product].id === likedProducts[product].id
newProducts.push(likedProducts[product])
else
newProducts.push(proucts[product])
请推荐合适的方法

试试这个

const allProducts = products.filter(n => likedProducts.find(n2 => n.id == n2.id));


您可以使用和执行以下操作

产品=[
{
id:1,
名称:“产品1”,
喜欢:错
},
{
id:2,
名称:‘产品2’,
喜欢:错
},
{
id:3,
名称:‘产品3’,
喜欢:错
},
{
id:4,
名称:‘产品4’,
喜欢:错
},
{
id:5,
名称:‘产品5’,
喜欢:错
},
]
喜欢的产品=[
{
id:1,
名称:“产品1”,
喜欢:真的
},
{
id:2,
名称:‘产品2’,
喜欢:真的
},
{
id:3,
名称:‘产品3’,
喜欢:真的
},
]
newProducts=products.map(项=>{
让index=likedProducts.findIndex(likedProduct=>likedProduct.id==item.id);
如果(索引>-1){
类似退货的产品[指数];
}
退货项目;
})

console.log(新产品)这是迭代2个数组并在某些特定条件下更新值的方法

const-updatedProduct=products.map((行,indexOfRows)=>{
for(让index=0;index});您可以对每个数组执行一次迭代。首先根据产品id为所有产品编制索引,然后迭代喜欢的产品并覆盖索引项。这样,不管每个数组有多少项,也不需要对至少一个数组进行不断的查找

constproducts=[{id:1,名称:'product1',liked:false},{id:2,名称:'product2',liked:false},{id:3,名称:'product3',liked:false},{id:4,名称:'product4',liked:false},{id:5,名称:'product5',liked:false},];
const likedProducts=[{id:1,名称:'product 1',liked:true},{id:2,名称:'product 2',liked:true},{id:3,名称:'product 3',liked:true},];
常量索引=新映射();
//为所有产品编制索引
对于(出租产品项){
索引集(item.id,item);
}
//覆盖任何喜欢的内容
for(让likedItem成为likedProducts){
if(索引has(likedItem.id)){
index.set(likedItem.id,likedItem);
}
}
//根据这些值构造一个新数组
const result=Array.from(index.values());

控制台日志(结果)回答了一千次,您需要一个迭代器来检查