这段代码让我陷入了困境。
if(colList[i] != checkList[i]) {
var colTest = colList[i];
var checkTest = checkList[i];
从调试的屏幕截图中可以看出,值是相同的。 ScreenShot
有关if语句为何认为这些值不同的任何提示?
编辑:Here is a screenshot showing the full arrays.
同样,我不确定为什么这很重要。实际上,出于测试目的,我有两个数组都来自完全相同的源数据。
第二次编辑:
以下是所有相关代码。再次,正如您所看到的那样,数组是相同的。
var colList = sheet.getRange(startRow,watchCol,lastRow,1).getValues(); // Data set with all values to watch
var checkList = sheet.getRange(startRow,watchCol,lastRow,1).getValues(); // Data set with all the check values
function timeStamp() {
for(var i = 0; i <= colList.length; i++)
if(colList[i] != checkList[i]) {
return colList
return checkList
以下是尝试将其视为多维数组的完整代码。此代码不起作用并返回&#34;无法读取属性&#34; 0&#34;来自undefined。 (第13行,&#34;
var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
var startRow = 2; // First row with Data
var lastRow = sheet.getLastRow() - startRow;
var watchCol = 2; // Column to check for changes
var checkCol = 7; // Column to check against
var timeCol = 3; // Column to put the time stamp in
var colList = sheet.getRange(startRow,watchCol,lastRow,1).getValues(); // Data set with all values to watch
var checkList = sheet.getRange(startRow,watchCol,lastRow,1).getValues(); // Data set with all the check values
function timeStamp() {
for(var i = 0; i <= colList.length; i++)
for(var j = 0; j < checkList.length; j++){
if(colList[i][j] != checkList[i][j]) {
return colList
return checkList
sheet.getRange(i + startRow,checkCol).setValue(colList[i]);
sheet.getRange(i + startRow,timeCol,1,1).setValue(new Date());
}
}
}
答案 0 :(得分:0)
正如我在评论中所说,你有一个索引数组在另一个数组中,所以你的是多维数组,你必须使用2个索引来访问它的值,i = row and j = column
var checkList = [["Beef"], ["Red"], ["Career"], ["Chicken"], ["Red"], ["Kids"], ["Beef"], ["Red"]];
var colList = [["Beef"], ["Red"], ["Career"], ["Chicken"], ["Red"], ["Kids"], ["Beef"], ["Red"]];
function timeStamp() {
for(var i = 0; i < colList.length; i++){
for(var j = 0; j < checkList[i].length; j++){
if(colList[i][j] != checkList[i][j]) {
console.log('not equal');
} else{
console.log('equal');
}
}
}
}
timeStamp();
&#13;
答案 1 :(得分:0)
根据你的截图,这很简单。
你的数组不包含字符串,它们包含包含字符串的数组,因此比较是真的,因为两个数组总是不同的,因为js中的数组是对象,当你尝试时比较对象,比较它们的引用,而不是值。
所以你应该创建字符串数组,或者只是在if
的每一边添加[0]答案 2 :(得分:0)
事实证明,在创建数组的函数末尾添加.String()可以解决问题,并允许它们正确比较。