我在Javascript中有一系列元素
var axes = [{id: "a"}, {id: "b"}]
我在变量
中有其中一个项目var axis = {id: "b"}
我想在JavaScript中使用一个衬里(类似于我在C#中可以执行的Linq一个衬里),其中我将获得该元素所在的数组的索引。所以,在这个例子中,我将得到答案1.
这怎么可能?
答案 0 :(得分:1)
您可以使用数组原型map
方法:
var axisIndex = axes.map(function(x) {return x.id; }).indexOf(axis.id);
https://stackoverflow.com/a/16100446/1414562
为了支持旧浏览器,你可以使用jQuery的方式:
var axisIndex = $.inArray(axis.id, $.map(axes, function(x){return x.id}));
答案 1 :(得分:0)
看起来您想要创建一个新的axis
对象,该对象看起来与axes
数组中的某个元素相同,但实际上并不是axes
的元素阵列。如果是这种情况,indexOf
方法将无效,因为它可能会找到您在数组中搜索的确切对象。
有很多方法可以做到这一点 - 它通常涉及不止一行(一行限制似乎相当微不足道)。然而,我找到了一个解决方案,尽管它看起来相当丑陋,并且比真实的实时代码更适合代码高尔夫问题。
axes.indexOf(axes.filter(function(el) {if (el.id === axis.id) return true; }).shift());