选择一个';属性值';从基于另一个';属性值';在javascript中

选择一个';属性值';从基于另一个';属性值';在javascript中,javascript,arrays,Javascript,Arrays,我有一个这样的数组 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}]; 我想要一个函数,它将节点的ID作为输入,并返回其(x,y)。 例如,函数坐标(103)应该读取数组(节点)并在调用时返回x=300,y=300。任何一个指针都很感激。谢谢:) 这就是我目前所拥有

我有一个这样的数组

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}];
我想要一个函数,它将节点的ID作为输入,并返回其(x,y)。 例如,函数
坐标(103)
应该读取数组(节点)并在调用时返回x=300,y=300。任何一个指针都很感激。谢谢:) 这就是我目前所拥有的。这很有效,但我想知道更整洁的方法

function coordinates(id){
    for (var i=0 in nodes){
        if(nodes[i].ID == id){
            return { x: nodes[i].x, y: nodes[i].y};
        }
    }
}
console.log(coordinates(102));
使用数组,请尝试:

函数坐标(id){
return nodes.filter(函数(e){return e.ID==ID})[0]
}
var节点=[{ID:“101”,x:100,y:200},{ID:“102”,x:200,y:200},{ID:“103”,x:300,y:300},{ID:“104”,x:200,y:300}];
var结果=坐标(“103”);
document.write(“+JSON.stringify(result,null,3))参见内联注释:

var f = function(id){
    var match = nodes.filter(function(d){ 
        return d.ID === id; 
    })
    return match && match.length && {x: match[0].x, y:match[0].y} 
    || {x: undefined, y: undefined};
};

var节点=[{
身份证号码:“101”,
x:100,
y:200
}, {
ID:“102”,
x:200,
y:200
}, {
身份证号码:“103”,
x:300,
y:300
}, {
ID:“104”,
x:200,
y:300
}];
var noOfCord=nodes.length;
变量坐标=函数(id){
对于(变量i=0;i您可以这样使用

var f = function(id){
    var match = nodes.filter(function(d){ 
        return d.ID === id; 
    })
    return match && match.length && {x: match[0].x, y:match[0].y} 
    || {x: undefined, y: undefined};
};
var节点=[{
身份证号码:“101”,
x:100,
y:200
}, {
ID:“102”,
x:200,
y:200
}, {
身份证号码:“103”,
x:300,
y:300
}, {
ID:“104”,
x:200,
y:300
}];
函数坐标(节点,id){
var结果=节点。过滤器(函数(el){
return+el.ID==ID;
});
if(result&&result.length){
结果=结果[0];
返回{
结果,
y:结果是
};
}
返回null;
}

日志(坐标(节点,103))基本上你看到的是这样的东西

function coordinates(id){
    var n = _.findWhere(nodes, {ID: id});
    return {x: n.x, y: n.y }
}

然后
f('101')
输出
{x:100,y:200}
,如果找不到匹配项,它将输出
{x:undefined,y:undefined}

这里的人已经提出了使用具体JavaScript的精彩解决方案。因此,我建议使用下划线.js作为另一种选择,以防您感到好奇


好的,让我们一起来解决这个问题。到目前为止,您尝试了什么?我喜欢您的自定义方法:)