使用数组中的和对象分配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];
}