我有一组随机填充的对象
var lproducts = [
{
"nombre":"Agua",
"descripcion":"Agua purificada",
"precio": 10.5
},
{
"nombre":"leche",
"descripcion":"leche entera",
"precio": 20
},
{
"nombre":"Manzana",
"descripcion":"Manzana Roja",
"precio": 5
},
{
"nombre":"Galletas",
"descripcion":"Galletas Chocolate",
"precio": 10
}
]
我不知道一个对象是什么时候添加到数组中的,所以我不知道它的索引,我想删除名称属性为“Apple”的对象。我知道lproducts.splice(2, 1)
我可以从数组中删除一个对象,其中数字 2 是我要删除的项目的索引。
我需要知道的是名为 apple 的对象的索引,以便我可以删除它。
您可以创建仅获取产品名称的数组映射,您可以使用它
indexOf
您可以使用 Array 类的 reduce() 函数。
它首先接收 in 中的第一个元素、 in
anterior
中的第二个元素以及 inactual
中的当前元素的索引indice
。它像这样遍历整个数组,如果任何匹配的值,它返回它的索引。filter()
我会使用or方法find()
。这是一个测试搜索功能:向此函数传递您的数组 ( lproducts ) 和搜索的名称 ( Apple ) 作为参数。
filter()方法返回一个包含所有通过测试的元素的数组。在这种情况下,它返回键名与我们传递给函数的名称相同的产品。
注意: find()和filter()方法之间的区别在于(如果有结果)find()返回找到的第一个结果,而filter()返回包含所有结果的数组。如果在您的情况下,name是一个不能重复的键,您可以将filter()更改为find()。
注意2:如果您需要的是索引,您可以通过调用findIndex()使用另一种方法,类似于find(),但它返回索引而不是元素。
注3:https ://stackoverflow.com/questions/19253753/javascript-find-json-value