oldnames[i+3]='汤姆' newnames[i]='汤姆'
当两个参数具有相同的值(见上文)时,为什么我的代码会执行?
for (var i=0 ; i<pocet2 ; i++) {
var oldnaz=(oldnames[i+3]).toString();
var newnaz=(newnames[i]);
oldnaz=oldnaz.toString();
newnaz=newnaz.toString();
//Logger.log("oldname = "+oldnaz);
//Logger.log("newname = "+newnaz);
if(newnames[i]=='' )
{
//Logger.log(ss.getSheetByName(oldnames[i+3]).getSheetName());
//Logger.log(i);
//Logger.log(i+3);
ss.getSheetByName(oldnames[i+3]).setName((i+1).toString());
}
** else if(newnames[i] != oldnames[i+3])
{
//Logger.log(newnames[i]);
//Logger.log(oldnames[i+3]);
ss.getSheetByName(oldnames[i+3]).setName(newnames[i]);
}**
else
{
//Nothing
}
}
我尝试对代码进行一些更改,但结果在各方面都是如此:条件为 TRUE。 但是当第一个值是 Tom 并且第二个值是 Tom 时,则 else if(Tom != Tom) 应该为 FALSE。 非常感谢您的提示。
如果
oldnames
和 newnames
来自使用 range.getValues()
的范围,则这两个变量都是二维数组而不是一维数组。
因此,oldnames[i+3]='Tom' newnames[i]='Tom'
是假的,那就是
oldnames[i+3]=['Tom']; //array
newnames[i]=['Tom'];
/*<ignore>*/console.config({maximize:true,timeStamps:false,autoScroll:false});/*</ignore>*/
const newname=['Tom'];
const oldname=['Tom'];
console.log(newname != oldname);//expected true
<!-- https://meta.stackoverflow.com/a/375985/ --> <script src="https://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
两个数组无法进行比较。获取里面的字符串并比较:
else if(newnames[i][0] != oldnames[i+3][0])