gpt4 book ai didi

javascript - 如何在 JavaScript 中更新/添加数组元素?

转载 作者:可可西里 更新时间:2023-11-01 02:37:45 25 4
gpt4 key购买 nike

如何更新/添加数组中的元素?

var persons = {
data: []
};

var bob = {name: 'Bob', age: 15};
var fill = {name: 'Fill', age: 20};
var mark = {name: 'Mark', age: 19};
var john = {name: 'John', age: 4};

persons['data'].push(bob);
persons['data'].push(fill);
persons['data'].push(mark);
persons['data'].push(john);

var updatedJohn = {name: 'John', age: 100};

if (!persons['data'][updatedJohn.name]){
persons['data'].push(updatedJohn);
} else {
persons['data'][updatedJohn.name] = updatedJohn; // this line doesn't work
}

如果元素 John 已经存在,我不知道如何更新数组的元素。

更新

jsFiddle example

最佳答案

您将需要如下查询函数来帮助您根据数据库中的属性查找索引:( JSFiddle )

function findIndexByProperty(data, key, value) {
for (var i = 0; i < data.length; i++) {
if (data[i][key] == value) {
return i;
}
}
return -1;
}

var johnIndex = findIndexByProperty(persons.data, 'name', 'John');
if (johnIndex > -1) {
persons.data[johnIndex] = updatedJohn;
} else {
persons.data.push(updatedJohn);
}

请注意,这只会返回名称为 John 的第一条记录。您将需要决定在多个此类记录的情况下您希望它做什么 - 更新所有这些记录?这种问题就是为什么数据库通常有唯一的键来标识记录。

如果使用 Underscore 或 lodash 你已经有一个 _.findIndex()可以替代使用的函数:

var johnIndex = _.findIndex(persons.data, { name: 'John' }); 

2021 年更新:使用现代 JavaScript,您可以将函数替换为

const johnIndex = persons.data.findIndex(p => p.name === "John")

关于javascript - 如何在 JavaScript 中更新/添加数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com