在数组中查找对象并更新它

时间:2014-09-05 08:36:25

标签: javascript jquery

我有一个对象数组:

[
   { c: 'AAPL', price: 500 },
   { c: 'GGOG', price: 100 }
]

我想更新GOOG价格,用新的报价对象扩展一个对象。

如何在没有循环的情况下在数组中找到indexOf GOOG对象? 这可能是js或jquery的原生函数吗?

3 个答案:

答案 0 :(得分:3)

您可以使用$.grep按已知值查找数组中的对象:

var google = $.grep(arr, function(item){ return item.c == 'GOOG'; });
google[0].price = 200;

或者,如果要更新原始数组中的对象,则需要使用循环。像这样:

function findStock(name) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].c == name) return arr[i];
    }
}

function updateStock(name, price) {
    var stock = findStock(name);
    if (stock) stock.price = price;
}

updateStock('GOOG', 750);

Example fiddle

答案 1 :(得分:0)

你也应该能够使用原生JS。

var obj=[
{ c: 'AAPL', price: 500 },
{ c: 'GGOG', price: 100 }
];

findIndexOf(obj, 'GGOG', 'c');
function findIndexOf(inObj, searchStr, objAttribute){
    for(var i in inObj){
        if(inObj[i][objAttribute]==searchStr)
            return i;
    }
    return -1;
}

答案 2 :(得分:0)

您可以尝试使用Array.map,如下所示:

var upd='GOOG',p=250,u=false;

array.map(function(){
    if(!u&&this.c==upd)
    {
         this.price=p;
         u=true;
    }
});