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,你比我更关注这个问题。您不认为您可以删除第一个条件,因为您有第二个条件执行检查吗?我知道您的意思:)我只想对原始代码进行尽可能少的更改。。。所以我留下了它,我认为他不想改变原来的数组。他想创建一个只修改一个对象的新对象。你可以看看我的答案:)