不久前我拼凑了一些代码,它运行良好,但现在发生了一些变化,它不再按预期工作。我有下面的代码行,用于返回第一次找到匹配值的位置。我对此很不满意,但我能说的最好的是 map 函数遍历数组的每个元素并根据调用的函数返回一个值。在这种情况下,我相信该函数被称为 e。
来自日志: lookup_array(仅前 3 个元素)我还删除了每个数组的第一个元素以外的数据,因为这是相关数据。
[
[AC, , , , ,]
, [AC, , , , , ]
, [AC, , , , , ]
...]
newsheet_name = AC
在这种情况下,所需的输出将为 0,因为 newsheet_name 匹配此数组中的第一条记录。不幸的是,我得到了 -1 的结果,但不知道为什么。
var index = lookup_array.map(function(e) {return e[1]}).indexOf(newsheet_name);
答案 0 :(得分:0)
问题:
您需要返回 e[0]
而不是 e[1]
。请记住,JavaScript
索引从 0
开始,您希望获取数组中的第一个元素。
解决方案:
const lookup_array = [
["AC","","","",""],
["AC","","","",""],
["AC","","","",""],
];
const newsheet_name = "AC";
const index = lookup_array.map(e=>e[0]).indexOf(newsheet_name);
console.log(index);
或者如果您不想使用 arrow functions,则将您的解决方案与 e[0]
一起使用:
const index = lookup_array.map(function(e) {return e[0]}).indexOf(newsheet_name);