首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Java脚本中的2D数组,如何找到所有的indexesOf值?

对于Java脚本中的2D数组,如何找到所有的indexesOf值?
EN

Stack Overflow用户
提问于 2020-04-22 11:21:48
回答 3查看 49关注 0票数 0

我有一个2D数组和一个函数,它将返回值Q的索引。我如何编写函数才能得到AllIndexOfQ?所以如果我在找“狗”,我会得到0,0,1,2,3,3,3,2

代码语言:javascript
复制
var arr = Array(['dog', 'cat', 'fish'], ['fish', 'fish', 'dog'], ['cat', 'tiger', 'fish'], ['cat', 'dog', 'dog']);

function getIndexOfQ(data, q) {
  for (var i = 0; i < data.length; i++) {
    var index = data[i].indexOf(q);
    if (index > -1) {
      return [i, index];
    }
  }
}

var a = getIndexOfQ(arr, "dog");
console.log(a);

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-22 11:26:27

不要使用return,而是推到数组。而且,indexOf是不够的,因为这并不能找到所有的匹配,仅仅是第一个匹配。您必须遍历子数组的每个项,如果匹配,则将两个指示符的数组推送到匹配数组中:

代码语言:javascript
复制
var arr = Array(['dog', 'cat', 'fish'], ['fish', 'fish', 'dog'], ['cat', 'tiger', 'fish'], ['cat', 'dog', 'dog']);

function getIndexOfQ(data, q) {
  const matches = [];
  data.forEach((arr, i) => {
    arr.forEach((item, j) => {
      if (item === q) {
        matches.push([i, j]);
      }
    });
  });
  return matches;
}

var a = getIndexOfQ(arr, "dog");
console.log(a);

票数 0
EN

Stack Overflow用户

发布于 2020-04-22 11:27:58

arr.indexOf(searchElement[, fromIndex])按MDN。

这意味着您可以循环遍历数组,每次指定一个起点来查找所有发生的事件。

票数 0
EN

Stack Overflow用户

发布于 2020-04-22 11:28:44

很难为多个匹配编写一行。

代码语言:javascript
复制
const arr = [['dog', 'cat', 'fish'], ['fish', 'fish', 'dog'], ['cat', 'tiger', 'fish'], ['cat', 'dog', 'dog']];
const getIndexOfQ = (data, q) => {
  let matches = [];
  data.forEach((a, i) => { 
    a.forEach((item, j) => { if (item === q) matches.push([i, j]) }) 
  })
  return matches;
};


const a = getIndexOfQ(arr, "dog");
console.log(a);

如果您只想在每个数组中找到一条狗,请尝试此方法。

代码语言:javascript
复制
const arr = [['dog', 'cat', 'fish'], ['fish', 'fish', 'dog'], ['cat', 'tiger', 'fish'], ['cat', 'dog', 'dog']];

const getIndexOfQ = (data, q) => data.map(
  (item,i) => (item.indexOf(q) !==-1) ? [i,item.indexOf(q)] : false)
  .filter(item => item);

const a = getIndexOfQ(arr, "dog");
console.log(a);

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

https://stackoverflow.com/questions/61363872

复制
相关文章

相似问题

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