4

次のような配列を作成しました。

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

ある時点で、いくつかの新しい要素を配列に追加する必要がありますが、最初に同じ名前の要素が既に存在するかどうかを確認する必要があります。はいの場合、値を更新する必要があります。いいえの場合、新しい要素を作成して追加する必要があります。新しい要素の値がゼロに等しく、要素が存在する場合は、配列から削除する必要があります。

4

2 に答える 2

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;
}
于 2013-09-04T13:15:35.167 に答える
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);
于 2013-09-04T13:26:47.040 に答える