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

时间:2015-06-01 04:21:44

标签: javascript arrays

我只是对此感到好奇。

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

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

//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的属性,它还会更改数组中与之关联的对象的属性吗?

非常感谢!

3 个答案:

答案 0 :(得分:6)

  

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

是。

不复制对象。而是传递对对象的引用。最简单的例子:

#define INDEX_OF_DATA(data, type, index) ((type*)data)[index]

struct mystruct { float f[2]; };
mystruct* p = &INDEX_OF_DATA(buffer, mystruct, 3);

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

答案 1 :(得分:2)

数组中对象的值也会改变,因为它是一个引用。如果您需要更多信息,我强烈建议您阅读Objects and Prototypes

如果你不想让它改变那么你应该使用lodash的_.clone()函数。

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

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

答案 2 :(得分:1)

您可以将功能更新为:

iterpc

使用它

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;
}