获取数组中搜索结果的索引

时间:2020-02-20 14:54:26

标签: javascript arrays multidimensional-array

我有以下代码:

var member_data_list = [
  ["adrian", "test", Number(9)],
  ["supler", "test", Number(2.3)],
  ["franz", "test", Number(2.5)],
  ["drucker", "test", Number(9.6)],
];

if (exists(member_data_list, "franz")) {
     //HERE I NEED TO GET THE INDEX OF MEMBER_DATA_LIST[?]
     //EXAMPLE: if (exists(member_data_list, "franz")) => RESULT => 2 (MEMBER_DATA_LIST[2])
     console.log("NAME IS IN ARRAY AT INDEX " + "?");
}
        
function exists(arr, search) {
   return arr.some(row => row.includes(search));
}

如何获取此数组中名称的索引?

5 个答案:

答案 0 :(得分:1)

一种解决方案是通过.find()获取元素,然后使用.indexOf()。例如:

var member_data_list = [
  ["adrian", "test", Number(9)],
  ["supler", "test", Number(2.3)],
  ["franz", "test", Number(2.5)],
  ["drucker", "test", Number(9.6)],
];

if (exists(member_data_list, "franz")) {
    var found = member_data_list.find(row => row[0] === "franz")
    var index = member_data_list.indexOf(found)
    
    // if the element is exists then index's value will be greater than -1
    if (index > -1) {
      console.log("NAME IS IN ARRAY AT INDEX " + index)
    }
}
        
function exists(arr, search) {
   return arr.some(row => row.includes(search));
}

答案 1 :(得分:0)

您可以创建另一个函数来获取循环数组并使用include的索引:

var member_data_list = [
  ["adrian", "test", Number(9)],
  ["supler", "test", Number(2.3)],
  ["franz", "test", Number(2.5)],
  ["drucker", "test", Number(9.6)],
];

if (exists(member_data_list, "franz")) {
     var index = findIndex(member_data_list, 'franz'); 
     console.log("NAME IS IN ARRAY AT INDEX " + index);
}
        
function exists(arr, search) {
   return arr.some(row => row.includes(search));
}

function findIndex(array, value) {
    for (var i = 0; i < array.length; i += 1) {
        if (array[i].includes(value)) {
            return i;
        }
    }
    return -1;
}

答案 2 :(得分:0)

您可以迭代数组并返回嵌套数组的索引。为了查找该名称在任何子数组中是否可用,请使用includesindexOf。还要假设该数组包含两个具有某些内容的子数组,那么将返回更高的索引

var member_data_list = [
  ["adrian", "test", Number(9)],
  ["supler", "test", Number(2.3)],
  ["franz", "test", Number(2.5)],
  ["drucker", "test", Number(9.6)],
];

function exists(arr, name) {
  let ind;
  arr.forEach((item, index) => {
    if (item.includes(name.toLowerCase())) {
      ind = index
    }
  })
  return ind;
}
let isExist = exists(member_data_list, "franz")
if (isExist) {
  console.log("NAME IS IN ARRAY AT INDEX " + isExist);
}

答案 3 :(得分:0)

您还可以使用Array.prototype.findIndex()(不适用于Internet Explorer)

var member_data_list = [
  ["adrian", "test", Number(9)],
  ["supler", "test", Number(2.3)],
  ["franz", "test", Number(2.5)],
  ["drucker", "test", Number(9.6)],
];

if (exists(member_data_list, "franz")) {
     var index = findIndex(member_data_list, 'franz'); 
     console.log("NAME IS IN ARRAY AT INDEX " + index);
}
        
function exists(arr, search) {
   return arr.some(row => row.includes(search));
}

function findIndex(arr, search) {
   return arr.findIndex(row => row.includes(search));
}

答案 4 :(得分:0)

单行:

var i = member_data_list.findIndex(item => item[0] ==="franz");

在线运行此

var member_data_list = [
  ["adrian", "test", Number(9)],
  ["supler", "test", Number(2.3)],
  ["franz", "test", Number(2.5)],
  ["drucker", "test", Number(9.6)],
];

console.log(member_data_list.findIndex(item => item[0] ==="franz"));

相关问题