添加或更新数组元素

时间:2013-09-04 13:11:35

标签: javascript jquery arrays

我创建了一个类似的数组:

myarr: [ 
    { name:'London', population:'7000000' },
    { name:'Munich', population:'1000000' }
]

在某些时候我需要向数组添加一些新元素,但首先我需要检查是否已存在具有相同名称的元素。如果是,则必须更新该值。如果不是,则必须创建并添加新元素。如果new元素中的值等于零且元素存在,则必须从数组中删除它。

2 个答案:

答案 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);