我创建了一个类似的数组:
myarr: [
{ name:'London', population:'7000000' },
{ name:'Munich', population:'1000000' }
]
在某些时候我需要向数组添加一些新元素,但首先我需要检查是否已存在具有相同名称的元素。如果是,则必须更新该值。如果不是,则必须创建并添加新元素。如果new元素中的值等于零且元素存在,则必须从数组中删除它。
答案 0 :(得分:4)
你可以这样做
function myFunction(myarr, item) {
var found = false;
var i = 0;
while (i < myarr.length) {
if (myarr[i].name === item.name) {
// Do the logic (delete or replace)
found = true;
break;
}
i++;
}
// Add the item
if (!found)
myarr.push(item);
return myarr;
}
答案 1 :(得分:3)
这应该是技巧http://jsfiddle.net/tcwqV/
var arr = [
{ name:'London', population:'7000000' },
{ name:'Munich', population:'1000000' }
]
var addNewElement = function(arr, newElement) {
var found = false;
for(var i=0; element=arr[i]; i++) {
if(element.name == newElement.name) {
found = true;
if(newElement.population === 0) {
arr[i] = false;
} else {
arr[i] = newElement;
}
}
}
if(found === false) {
arr.push(newElement);
}
// removing elements
var newArr = [];
for(var i=0; element=arr[i]; i++) {
if(element !== false) newArr.push(element);
}
return newArr;
}
arr = addNewElement(arr, {name: 'Paris', population: '30000000'});
console.log(arr);
arr = addNewElement(arr, {name: 'Paris', population: '60000000'});
console.log(arr);
arr = addNewElement(arr, {name: 'Paris', population: 0});
console.log(arr);