【问题标题】:Reading the statement "if (x[i][0])."阅读语句“if (x[i][0])”。
【发布时间】:2019-01-23 14:43:27
【问题描述】:

我想问一个关于 IF 语句的问题。

就像标题中所说的那样,“for”和“If(x[i][0])”是如何工作的? 代码看起来像这样。

var dataws1 = source.getRange(1,1,Alast,source.getLastColumn()).getValues(); 
var outData = [];
for (var i in dataws1) {
  if (dataws1[i][0] == criteria) { 
    outData.push(dataws1[i])
  }
}

据我了解,当前 IF 检查第一列是否与条件匹配,然后将其放入 outData 数组中。我尝试更改 IF 的一些值以检查其他列,但无济于事。我仍然不熟悉 Java 脚本,我希望了解更多关于如何阅读和它如何工作的信息。提前致谢!

【问题讨论】:

标签: for-loop if-statement google-apps-script google-sheets


【解决方案1】:

您的代码正在从dataws1 复制/推送每个数组,其中第一个元素是“条件”。

例如:

var dataws1 = [['criteria', 'hello'], ['what', 'is', 'criteria'], ['criteria', 'friend']];
var outData = [];
for (var i in dataws1) {
   if (dataws1[i][0] == 'criteria') { 
      outData.push(dataws1[i]);
   }
}
for (var j in outData) {
  document.write("outData["+j+"] = [" + outData[j] + "]<br>");
}

outData 将包含outData = [[criteria, hello], [criteria, friend]]

【讨论】:

  • 我明白了,这说明了很多。如果“标准”碰巧在数组上的顺序不同,比如说[你好,朋友,标准],它是否仍然检测到“标准”?如果没有,可能的解决方法是什么?
  • 我已经更新了原始答案,并在dataws1 的第二个数组末尾添加了“条件”。如您所见,它不会将该数组推送到outData,因为“条件”不是那里的第一个元素。您有很多选择可以在其中包含任何带有“标准”的数组。我将提到 3 个选项:1)将您的 if 语句更改为 dataws1.includes(criteria)。 2) 将您的if 语句更改为dataws1.indexOf(criteria)。 3)您也可以使用循环并手动遍历数组中的每个元素并搜索“条件”。
  • 注意到这一点。非常感谢这个列夫。
【解决方案2】:

此循环获取dataws1 中的每个项目,然后根据“条件”检查其中的第一个值,如果匹配,则将其添加到outData 数组中。因此,如果dataws1 有 3 个项目,它将执行以下操作:

if (dataws1[0][0] == criteria) { 
  outData.push(dataws1[i])
}
if (dataws1[1][0] == criteria) { 
  outData.push(dataws1[i])
}
if (dataws1[2][0] == criteria) { 
  outData.push(dataws1[i])
}

var criteria = "match";
var outData = [];
var dataws1 = [
  ['match', 'first'],
  ['nonMatch', 'second'],
  ['match', 'third']
];
for (var i in dataws1) {
  if (dataws1[i][0] == criteria) {
    outData.push(dataws1[i])
  }
}
console.log(outData)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2021-07-11
    • 1970-01-01
    • 2022-11-09
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多