【发布时间】:2019-06-16 01:48:48
【问题描述】:
我有两个值数组。我想使用一个数组的元素作为indexOf 函数的参数。但是即使我知道数组中存在该值,我也会得到一个-1(意思是未找到值)。
我已经通过硬编码indexOf 的参数中的值来测试这一点,所以我知道在这种情况下我的问题在于cur_data 变量。当我用'xyz' 对cur_data[x] 进行硬编码时,indexOf 返回正确的索引,但是当我使用数组值[xyz] 时,它返回-1。
我做错了什么?
function iterateSheets() {
var price_data = SpreadsheetApp.openById('1Nttb7XqUlZwGtmwbcRc3QkY3f2rxx7XdsdEU3cK4K4').getSheetByName('price').getRange("A2:A353").getValues()
var price_data2 = price_data.map(function(r) {
return r[0];
});
var test = new Array(30)
var ts = SpreadsheetApp.openById('18qFvVMVEE1k5DWUYaSezKeobcLr8I4oAmHLUpd_X99k');
var allShts = ts.getSheets();
for (var i = 0; i < 1; i++) //allShts.length //need to add in code to make sure tab is one of the fcst tabs
{
var cur_data = allShts[i].getRange("B8").getValues()
if (allShts[i].getName() == "July" || allShts[i].getName() ==
"Aug" || allShts[i].getName() == "Sept") {
for (var x = 0; x < 1; x++) {
Logger.log(cur_data[x])
Logger.log(price_data2.indexOf(cur_data[x]));
}
}
}
}
【问题讨论】:
-
请您分享您的电子表格,或者至少分享电子表格中的一些数据,以便我们重现您的错误。您是否还包括执行记录。
-
顺便说一句,您能否澄清一下
cur_data[x]是否是Array的一个实例(没关系,从代码来看,它是Array的一个实例)?似乎问题是由于getValues()方法总是返回一个 2DArray并且,因为对象到对象的直接比较总是返回false和indexOf()uses strict comparison 来查找值,你的{Array}.indexOf({Array})总是结果在-1. -
你使用了
getValues,所以用完整的二维数组地址描述cur_data。这对我有用。var c = price_data2.indexOf(cur_data[0][0]);`Logger.log("c = "+c);'
标签: javascript arrays for-loop google-apps-script google-sheets