Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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_Arrays_Lodash - Fatal编程技术网

什么';使用Javascript查找和修改数组中对象的最佳方法是什么?

什么';使用Javascript查找和修改数组中对象的最佳方法是什么?,javascript,arrays,lodash,Javascript,Arrays,Lodash,我有一系列这种款式: var productsList = [ { id: 'as5', name: 'Coca-Cola', price: 17.5, unit: 'Botellas', quantity: 23 }, { id: 'q7s', name: 'Queso', price: 34.8, unit:

我有一系列这种款式:

var productsList = [
    {   
        id: 'as5',
        name: 'Coca-Cola',
        price: 17.5,
        unit: 'Botellas',
        quantity: 23
    },
    {   
        id: 'q7s',  
        name: 'Queso',
        price: 34.8,
        unit: 'Kilos',
        quantity: 6
    },
    {   
        id: 'pa5',
        name: 'Pan',
        price: 3.5,
        unit: 'Piezzas',
        quantity: 100
    },
    {   
        id: 'capu2',
        name: 'Aceite',
        price: 21,
        unit: 'Botella',
        quantity: 10
    },
    {   
        id: 'bon4',
        name: 'Agua Bonafont',
        price: 25,
        unit: 'Garrafón',
        quantity: 12
    },
    {   
        id: 'tun1',
        name: 'Atún',
        price: 11,
        unit: 'Lata',
        quantity: 30
    },                              
];    
我需要根据其id查找数组位置,并将quantity属性减量1

这就是我使用lodash 3.10所做的:

var product = _.find(productsList, {id: 'tun1'});
product.quantity--;
productsList.splice(_.findIndex(productsList, {id: 'tun1'}), 1, product);
但我不喜欢必须执行两个操作,一个是检索修改的数组元素,另一个是获取其位置

然后我甚至必须使用splice,它将再次迭代


ES5 JS的最佳方式是什么?

最后一步是不必要的。您似乎不了解Javascript中引用是如何工作的(?)


做你想做的。

最后一步是不必要的。您似乎不了解Javascript中引用是如何工作的(?)


做你想做的事。

你已经做到了。最后一行是不必要的,您可以这样写:

_.find(productsList, {id: 'tun1'}).quantity--;

你做到了。最后一行是不必要的,您可以这样写:

_.find(productsList, {id: 'tun1'}).quantity--;

你不需要最后一行。你已经改变了对象。最后一行所做的就是用不必要的对象本身替换对象。您不需要最后一行。你已经改变了对象。最后一行所做的就是将对象本身替换为不必要的对象。请您对此类引用进行更多扩展,好吗?在这种情况下,
\uuuu.find(productsList,{id:'tun1'})。quantity--做这个工作?但是,这两个步骤更为稳健,因为find可能找不到合适的值。请您对此类引用进行更多扩展,好吗?在这种情况下,
\uuuu.find(productsList,{id:'tun1'})。quantity--做这个工作?然而,这两个步骤更稳健,因为find可能找不到合适的值。