Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中查找对象并更新它_Javascript_Jquery - Fatal编程技术网

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

Javascript 在数组中查找对象并更新它,javascript,jquery,Javascript,Jquery,我有一个对象数组: [ { c: 'AAPL', price: 500 }, { c: 'GGOG', price: 100 } ] 我想更新GOOG price,用新的quote对象扩展一个对象 如何在不循环的情况下在数组中查找GOOG对象的indexOf? js或jquery的本机函数是否可以实现这一点?您可以使用$.grep在数组中按已知值查找对象: var google = $.grep(arr, function(item){ return item.c == 'GOOG

我有一个对象数组:

[
   { c: 'AAPL', price: 500 },
   { c: 'GGOG', price: 100 }
]
我想更新GOOG price,用新的quote对象扩展一个对象

如何在不循环的情况下在数组中查找GOOG对象的indexOf?
js或jquery的本机函数是否可以实现这一点?

您可以使用
$.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);
函数findStock(名称){
对于(变量i=0;i

您可以使用
$.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);
函数findStock(名称){
对于(变量i=0;i

您可以使用
$.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);
函数findStock(名称){
对于(变量i=0;i

您可以使用
$.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);
函数findStock(名称){
对于(变量i=0;i

您也应该能够使用本机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;
}

您还应该能够使用本机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;
}

您还应该能够使用本机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;
}

您还应该能够使用本机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;
}

您可以像这样尝试使用
Array.map

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);
var upd='GOOG',p=250,u=false;
map(函数(){
如果(!u&&this.c==upd)
{
这个价格=p;
u=真;
}
});

您可以尝试使用
数组.map
如下:

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);
var upd='GOOG',p=250,u=false;
map(函数(){
如果(!u&&this.c==upd)
{
这个价格=p;
u=真;
}
});

您可以尝试使用
数组.map
如下:

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);
var upd='GOOG',p=250,u=false;
map(函数(){
如果(!u&&this.c==upd)
{
这个价格=p;
u=真;
}
});

您可以尝试使用
数组.map
如下:

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);
var upd='GOOG',p=250,u=false;
map(函数(){
如果(!u&&this.c==upd)
{
这个价格=p;
u=真;
}
});


不错。我甚至不知道
.grep()
。应该注意,
$.grep
返回一个数组,所以第二行应该是
google[0]。price
。我需要更改(扩展)原始数组中的对象。Grep似乎在创建新的数组,这对我来说是没有用的。是的,我知道如何使用loop。“但我想知道是否有较短(本地)的方法。”恐怕没有。不错的方法。我甚至不知道
.grep()
。应该注意,
$.grep
返回一个数组,所以第二行应该是
google[0]。price
。我需要更改(扩展)原始数组中的对象。Grep似乎在创建新的数组,这对我来说是没有用的。是的,我知道如何使用loop。“但我想知道是否有较短(本地)的方法。”恐怕没有。不错的方法。我甚至不知道
.grep()
。应该注意,
$.grep
返回一个数组,所以第二行应该是
google[0]。price
。我需要更改(扩展)原始数组中的对象。Grep似乎在创建新的数组,这对我来说是没有用的。是的,我知道如何使用loop。“但我想知道是否有较短(本地)的方法。”恐怕没有。不错的方法。我甚至不知道
.grep()
。应该注意,
$.grep
返回一个数组,所以第二行应该是
google[0]。price
。我需要更改(扩展)原始数组中的对象。Grep似乎在创建新的数组,这对我来说是没有用的。是的,我知道如何使用loop。但我想知道是否有更短的(本地)方法。@Prototrader我恐怕没有。你们为什么讨厌循环?您必须使用循环。@未定义,我要求提问者找出未知的函数,它可以使生活更轻松。我打赌你使用本机的.filter函数,而不是一直循环。我敢打赌你使用了native.indexOf函数而不是循环。回答“没有速记或本机函数”比教学更好。即使是
过滤器
$。grep
被视为一个循环,每个数组的元素都会执行一次回调。如果你大量使用对象数组,你可以考虑使用下划线库来提供很多实用功能。为什么你讨厌循环?您必须使用循环。@未定义,我要求提问者找出未知的函数,它可以使生活更轻松。我打赌你使用本机的.filter函数,而不是一直循环。我敢打赌你使用了native.indexOf函数而不是循环。回答“没有速记或本机函数”比教学更好。即使是
过滤器
$。grep
被视为一个循环,每个数组的元素都会执行一次回调。如果你大量使用对象数组,你可以考虑