Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

使用数组中的和对象分配javascript对象

使用数组中的和对象分配javascript对象,javascript,arrays,Javascript,Arrays,我只是好奇而已 假设我有一个对象数组,我创建了一个对象,让我们命名对象数组项和对象项 我想使用以下代码获取项目数组中的特定项目: //gets an item base on ID function get_item(td){ var item = undefined; $.each(items, function(i, val) { if(val.item_id == td){ item = val; } }

我只是好奇而已

假设我有一个对象数组,我创建了一个对象,让我们命名对象数组项和对象项

我想使用以下代码获取项目数组中的特定项目:

//gets an item base on ID
function get_item(td){
    var item = undefined;
    $.each(items, function(i, val) {
        if(val.item_id == td){
            item = val;
        }   
    });
    return item;
}
get_item()基本上获取与提供的id匹配的对象

所以我的问题是。如果我更改了item的属性,它还会更改数组中与其关联的对象的属性吗

多谢各位

如果我更改了item的属性,它还会更改数组中与其关联的对象的属性吗

对象不会被复制。相反,对对象的引用是传递的。最简单的例子:

var a = [];
var b = a;
b.push(1);
console.log(a); // logs [1]

许多面向对象编程语言都是这样工作的。

您可以将函数更新为:

var data= array();
function get_item(propertyValue, propertyName){
    var retval;
    for(var i = 0; i < data.length; i++){
         if(data[i][propertyName]==propertyValue){
            retval = data[i];
            break;
         }
    }
    return retval;
}

数组中对象的值也将更改,因为它是引用。如果你想了解更多信息,我强烈建议你阅读

如果您不想更改它,那么应该使用类似lodash的
\uuz.clone()
函数的功能

您还可以使用过滤器获取对象:

function get_item(td){
    return items.filter(function(item) {
        return item.id === td;
    })[0];
}

可以发布示例数组对象吗?显示更多代码。在“假设我有…”之后,显示您认为与该情况对应的代码。如果您在项中参照数组进行更改,则该项将更改。如果您返回的实例与数组中存储的实例相同。。。是的will@JCFrane在这种形式下,是的,它会改变。你能详细说明一下吗?这是如何回答OP的问题的?“如果我更改了item的属性,它是否也会更改数组中与其关联的对象的属性?”它没有回答,但有帮助。@JCFrane:有很多事情可以帮助我。这并不意味着发表关于他们的文章是合适的。正如这个词已经暗示的那样,“答案”应该回答所提出的问题。正如这个词所暗示的,“答案”应该回答所提出的问题。@FelixKling是的,谢谢=)这很有帮助。谢谢
function get_item(td){
    return items.filter(function(item) {
        return item.id === td;
    })[0];
}