Javascript 使用其他属性值更改数组中对象的属性值

Javascript 使用其他属性值更改数组中对象的属性值,javascript,arrays,object,Javascript,Arrays,Object,我有一个数组,如下所示。我要实现的是一个函数,它将节点的ID、x和y作为输入,并在数组中进行相应的更改 var nodes = [{ID:"101", x:100, y:200} ,{ID:"102", x:200, y:200} ,{ID:"103", x:300, y:300} ,{ID:"104", x:200, y:300}]; 例如,函数(102200300)将数组中第二个对象的x和y更新为{ID:“10

我有一个数组,如下所示。我要实现的是一个函数,它将节点的ID、x和y作为输入,并在数组中进行相应的更改

var nodes = [{ID:"101", x:100, y:200}
             ,{ID:"102", x:200, y:200}
             ,{ID:"103", x:300, y:300}
             ,{ID:"104", x:200, y:300}]; 
例如,
函数(102200300)
将数组中第二个对象的x和y更新为
{ID:“102”,x:200,y:300}

我所做的是:

function update(id,x,y){
    for (var i=0 in nodes){
        if (nodes[i].ID==id){
            nodes[i].x = x;
            nodes[i].y = y;
            break;
        }
    }
}

除了使用for循环和if条件来检查和更新外,我还想知道其他方法。提前谢谢。

我不太清楚您在这里期待什么。如果你有一个非特定元素的数组,你将以这样或那样的方式循环结束,除非对象总是以相同的顺序,并且可以通过它们的索引访问。它们的ID是如何生成的/它们是如何推送到阵列上的

如果要避免循环,则应将对象存储在对象中,并使其ID成为键属性

var nodes = {
    '101': {ID: '101', x:100, y:200},
    '102': {ID: '102', x:200, y:200},
    '103': {ID: '103', x:300, y:300},
    '104': {ID: '104', x:200, y:300}
};
然后您可以直接访问它们

function setv(id, x, y) {
    if (nodes.hasOwnProperty(id)) {
        nodes[id].x = x;
        nodes[id].y = y;
    }
}
另外,您应该避免在数组上使用-使用常规的
for
循环,或

在对象上循环并检查其属性和值的简单方法:

function logObj(obj) {
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            console.log(p, obj[p]);
        }
    }
}

如果它是一个如我所说的数组,我可以使用
for(var I=0;我在答案中添加了一个小例子)。