Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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的类SQL内部联接_Javascript - Fatal编程技术网

Javascript的类SQL内部联接

Javascript的类SQL内部联接,javascript,Javascript,const产品=[{ id:5, 产品名称:“罗技鼠标”, 售价:35 }, { id:6, 产品名称:“罗技键盘”, 售价:40 } ]; 常数车=[{ id:101, 用户ID:3, 产品编号:5,, 数量:2 }]; 总计=购物车减少((r{ productId:id, 量 }) => (r[id]=(r[id]| | 0)+数量,r,{}), 结果=products.map(({ 身份证件 产品名称, 单价 }) => ({ 产品名称, 单价, 数量:总计[id] })); consol

const产品=[{
id:5,
产品名称:“罗技鼠标”,
售价:35
},
{
id:6,
产品名称:“罗技键盘”,
售价:40
}
];
常数车=[{
id:101,
用户ID:3,
产品编号:5,,
数量:2
}];
总计=购物车减少((r{
productId:id,
量
}) =>
(r[id]=(r[id]| | 0)+数量,r,{}),
结果=products.map(({
身份证件
产品名称,
单价
}) => ({
产品名称,
单价,
数量:总计[id]
}));

console.log(result)
如果您想保留带有“join”的购物车,您可以映射找到的产品(不带其id)并包含数量

const产品=[{
id:5,
产品名称:“罗技鼠标”,
售价:35
}, {
id:6,
产品名称:“罗技键盘”,
售价:40
}];
常数车=[{
id:101,
用户ID:3,
产品编号:5,,
数量:2
}];
let joined=cart.map(项目=>{
让{id,…rest}=products.find(p=>p.id==item.productId);
返回{…rest,'quantity':item.quantity};
});
控制台日志(已加入)

。作为控制台包装{top:0;最大高度:100%!important;}
我建议像这样使用
map
函数

const产品=[{
id:5,
产品名称:“罗技鼠标”,
售价:35
},
{
id:6,
产品名称:“罗技键盘”,
售价:40
}
];
常数车=[{
id:101,
用户ID:3,
产品编号:5,,
数量:2
}];
结果=cart.map(项目=>{
const product=products.find(product=>item.productId==product.id);
返回{id:item.id,数量:item.quantity,productName:product.productName,单价:product.unitprice}
});

控制台日志(结果)虽然Polywhill先生的答案是一个更干净、更好的解决方案,但这里有一个简单的代码编辑,可以解决您的问题。代码返回2的原因是由于
映射
。将其替换为
过滤器
和存在
id的条件
,以解决问题

const产品=[{
id:5,
产品名称:“罗技鼠标”,
售价:35
},
{
id:6,
产品名称:“罗技键盘”,
售价:40
}
];
常数车=[{
id:101,
用户ID:3,
产品编号:5,,
数量:2
}];
总计=购物车减少((r{
productId:id,
量
}) =>
(r[id]=(r[id]| | 0)+数量,r,{}),
结果=products.filter(({
身份证件
产品名称,
单价
}) => {
如果(总计[id])返回({
产品名称,
单价,
数量:总计[id]
})
});

console.log(result)
您正在使用map,并且它应该返回与您正在操作的数组中相同数量的元素,您是否尝试调整代码?
结果的内容从哪里来?想想为什么
.map()
可能不是最好的选择。检查
阵列的原型
以获得更好的选项。