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());
控制台日志(结果)代码>回答了一千次,您需要一个迭代器来检查