我只是对此感到好奇。
假设我有一个对象数组,我创建了一个对象,让我们命名对象数组 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的属性,它还会更改数组中与之关联的对象的属性吗?
非常感谢!
答案 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;
}