查找指定数组中元素的索引
Finding index of an element in a specified array
我正在制作一个 google 工作表应用程序脚本,我想在其中检查一个单元格中的值是否在值数组中,然后找到索引是什么,以便我可以指导我的对该单元格起作用。
我现在将我的数组放在一个名为 distArray
的变量中,我想检查 "id"
是否在该数组中。
下面是更好可视化的代码:
function logs() {
let app = SpreadsheetApp
let dest = app.getActiveSpreadsheet().getSheetByName("Baza Danych");
let lastrow = dest.getLastRow();
let destArr = dest.getRange(2, 1, lastrow).getValues();
let id = app.getActiveSpreadsheet().getSheetByName("Zgloszenia").getRange(6, 2).getValue();
let position = destArr.indexOf(id);
Logger.log(id)
Logger.log(destArr)
Logger.log(position)
}
然后here is the output我明白了。
我的问题是,无论 "id"
的值是什么,索引要么是 -1
要么是 0
意味着该值要么不在数组中,要么在第一个单元格。
尝试在行尾添加.flat()
:
let destArr = dest.getRange(2, 1, lastrow).getValues();
这样:
let destArr = dest.getRange(2, 1, lastrow).getValues().flat();
解释:
方法getValues()
给你一个二维数组[[1],[2],[3],...]
。
flat()
方法将二维数组转换为普通平面数组[1,2,3,...]
。
之后您将能够使用 array.indexOf(element)
获取数组中元素的索引。
描述
如果您不想知道数组的哪个元素包含您要查找的值,Yuri 的解决方案就是一个很好的例子。但是,如果您需要知道数组的哪一行包含值,以下示例显示了如何搜索二维数组。
脚本
function find() {
try {
let a = [['a','b'],['c','d'],['e','f'],['g','h']];
let b = "f";
let c = a.findIndex( d => d.indexOf(b) >= 0 );
console.log("c = "+c);
}
catch(err) {
console.log(err);
}
}
7:51:23 AM Notice Execution started
7:51:24 AM Info c = 2
7:51:23 AM Notice Execution completed
参考
我正在制作一个 google 工作表应用程序脚本,我想在其中检查一个单元格中的值是否在值数组中,然后找到索引是什么,以便我可以指导我的对该单元格起作用。
我现在将我的数组放在一个名为 distArray
的变量中,我想检查 "id"
是否在该数组中。
下面是更好可视化的代码:
function logs() {
let app = SpreadsheetApp
let dest = app.getActiveSpreadsheet().getSheetByName("Baza Danych");
let lastrow = dest.getLastRow();
let destArr = dest.getRange(2, 1, lastrow).getValues();
let id = app.getActiveSpreadsheet().getSheetByName("Zgloszenia").getRange(6, 2).getValue();
let position = destArr.indexOf(id);
Logger.log(id)
Logger.log(destArr)
Logger.log(position)
}
然后here is the output我明白了。
我的问题是,无论 "id"
的值是什么,索引要么是 -1
要么是 0
意味着该值要么不在数组中,要么在第一个单元格。
尝试在行尾添加.flat()
:
let destArr = dest.getRange(2, 1, lastrow).getValues();
这样:
let destArr = dest.getRange(2, 1, lastrow).getValues().flat();
解释:
方法getValues()
给你一个二维数组[[1],[2],[3],...]
。
flat()
方法将二维数组转换为普通平面数组[1,2,3,...]
。
之后您将能够使用 array.indexOf(element)
获取数组中元素的索引。
描述
如果您不想知道数组的哪个元素包含您要查找的值,Yuri 的解决方案就是一个很好的例子。但是,如果您需要知道数组的哪一行包含值,以下示例显示了如何搜索二维数组。
脚本
function find() {
try {
let a = [['a','b'],['c','d'],['e','f'],['g','h']];
let b = "f";
let c = a.findIndex( d => d.indexOf(b) >= 0 );
console.log("c = "+c);
}
catch(err) {
console.log(err);
}
}
7:51:23 AM Notice Execution started
7:51:24 AM Info c = 2
7:51:23 AM Notice Execution completed
参考