Javascript 如何映射一个对象数组,返回整个数组,其中一个
当我运行Javascript 如何映射一个对象数组,返回整个数组,其中一个,javascript,Javascript,当我运行decreaseQuantity()函数时,我只想返回整个对象数组,但一个对象的数量发生了变化(通过将索引(在本例中为“1”)传递给函数来确定) 现在,我只是返回第二个对象(数量正确地减少了一个),同时我还希望返回第一个对象(未更改)。因此,我想返回整个对象数组,但要改变指定对象的数量 我做错了什么?谢谢你的帮助 let cars = [ { color: "red", type: "minivan", quantity:
decreaseQuantity()
函数时,我只想返回整个对象数组,但一个对象的数量发生了变化(通过将索引(在本例中为“1”)传递给函数来确定)
现在,我只是返回第二个对象(数量正确地减少了一个),同时我还希望返回第一个对象(未更改)。因此,我想返回整个对象数组,但要改变指定对象的数量
我做错了什么?谢谢你的帮助
let cars =
[
{
color: "red",
type: "minivan",
quantity: 7
},
{
color: "blue",
type: "lambo",
quantity: 5
}
]
function decreaseQuantity(index) {
if (cars[index]) {
const updateCars = cars.map((product, i) => {
if (index == i) return { ...product, quantity: product.quantity - 1};
});
return updateCars;
}
}
console.log(decreaseQuantity(1))
你几乎说对了:
cars.map((product, i) => {
if (index == i) return { ...product, quantity: product.quantity - 1};
});
只需添加其他退货产品
。尽管我建议使用三元运算符:
cars.map((product, i) => index === i ? { ...product, quantity: product.quantity - 1} : product;
您需要为else子句添加
退货产品
。其他一切都很好。您可以尝试使用添加的else
运行我的答案的代码,并查看cars
和updateCars
的控制台输出
let cars=[
{
颜色:“红色”,
类型:“小型货车”,
数量:7
},
{
颜色:“蓝色”,
类型:“lambo”,
数量:5
}
];
函数递减量(索引){
if(汽车[指数]){
const updateCars=cars.map((产品,i)=>{
如果(索引==i){
返回{…产品,数量:product.quantity-1};
}否则{
退货产品;
}
});
返回更新卡;
}
}
const updateCars=递减量(1);
控制台.日志(汽车);
console.log(updateCars)代码>
let cars=[{
颜色:“红色”,
类型:“小型货车”,
数量:7
}, {
颜色:“蓝色”,
类型:“lambo”,
数量:5
}]
函数递减量(索引){
if(汽车[指数]){
汽车[指数]。数量-=1;
}
返回车辆;
}
控制台日志(减少数量(0));
控制台日志(减少数量(1))代码>是操场
const cars=[
{
颜色:“红色”,
类型:“小型货车”,
数量:7
},
{
颜色:“蓝色”,
类型:“lambo”,
数量:5
}
];
功能减少数量(车辆、索引){
返回汽车。地图((产品,i)=>{
如果(索引==i){
返回{…产品,数量:product.quantity-1};
}否则{
退货产品;
}
});
}
控制台日志(减少数量(车,0));
您可以发布一个示例输出吗?您只需要添加否则返回产品代码>是的,您当前仅在索引与映射函数匹配时返回一个值。我不认为他想要修改原始数组。您是否有到文档的良好链接,以便我了解有关修改原始数组的更多信息?特别是想了解更多关于这部分“{…产品,数量:product.quantity-1}”的信息,如果您希望我们可以聊天或打电话,我可以解释我对这部分的理解。你觉得亚历克斯怎么样?Skype、电报、Zoom?谢谢,Ulrich,你比我更关注这个问题。您不认为您可以删除第一个条件,因为您有第二个条件执行检查吗?我知道您的意思:)我只想对原始代码进行尽可能少的更改。。。所以我留下了它,我认为他不想改变原来的数组。他想创建一个只修改一个对象的新对象。你可以看看我的答案:)