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



我有以下代码:

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));
}

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

一种解决方案是通过.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));
}

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

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;
}

您可以迭代数组并返回嵌套数组的索引。要查找该名称是否在任何子数组中可用,请使用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);
}

您也可以使用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));
}

单线:

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"));

最新更新