首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript中查找数组中数组的索引位置

在JavaScript中查找数组中数组的索引位置
EN

Stack Overflow用户
提问于 2017-01-21 12:02:10
回答 3查看 186关注 0票数 0
代码语言:javascript
运行
复制
var a = [[1,0],[0,1],[0,0]];

如果我想找到[0,0]的索引位置?如何在JavaScript中做到这一点?

我检查了一些places和indexOf函数,但是它不适用于多维数组。

EN

回答 3

Stack Overflow用户

发布于 2017-01-21 12:15:31

您可以制作索引的hashmap并访问

代码语言:javascript
运行
复制
var a = [[1,0],[0,1],[0,0]],

b = a.reduce((a,c,i)=>{
  a[c] = i;
  return a;      
},{});

console.log('Index of [0,0] is ' +b[ [0,0] ] )

票数 0
EN

Stack Overflow用户

发布于 2017-01-21 12:24:01

您可以使用Array#some进行外部迭代,Array#every用于内部迭代,并检查长度和项。

代码语言:javascript
运行
复制
var array = [[1, 0], [0, 1], [0, 0]],
    find = [0, 0],
    index = -1;

array.some(function (a, i) {
    if (a.length === find.length && a.every(function (b, j) { return b === find[j]; })) {
        index = i;
        return true;
    }
});

console.log(index);

票数 0
EN

Stack Overflow用户

发布于 2017-01-21 12:27:54

快速(就性能而言)解决方案使用while循环和Array.prototype.every()函数:

代码语言:javascript
运行
复制
var a = [[1,0],[0,1],[0,0]], len = a.length,
        search_item = [0,1], pos = -1;

while (len--) {
    if ((a[len].length === search_item.length) 
            && a[len].every(function(el, i){ return el == search_item[i]; })) {
        pos = len;
        break;
    }
}

console.log(pos);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41779105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档