获取匹配元素的索引

时间:2014-05-21 09:53:04

标签: javascript jquery arrays

我在Javascript中有一系列元素

var axes = [{id: "a"}, {id: "b"}]

我在变量

中有其中一个项目
var axis = {id: "b"}

我想在JavaScript中使用一个衬里(类似于我在C#中可以执行的Linq一个衬里),其中我将获得该元素所在的数组的索引。所以,在这个例子中,我将得到答案1.

这怎么可能?

2 个答案:

答案 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());