我有一个对象数组:
[
{ c: 'AAPL', price: 500 },
{ c: 'GGOG', price: 100 }
]
我想更新GOOG价格,用新的报价对象扩展一个对象。
如何在没有循环的情况下在数组中找到indexOf GOOG对象? 这可能是js或jquery的原生函数吗?
答案 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);
答案 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;
}
});