gpt4 book ai didi

javascript - Google Apps javascript 遍历多个数组

转载 作者:行者123 更新时间:2023-11-30 20:20:58 24 4
gpt4 key购买 nike

我对自定义 Google 表格和只学习 javascript 比较陌生。我正在尝试创建一个自定义函数,它将在数组中搜索一个值并返回一个字符串(类似于 vlookup)。

我想要实现的是针对多个数组检查值。我写了下面但出于某种原因,它只检查数组的第一个元素(它确实有效但由于某种原因停止了,我无法弄清楚为什么因为我认为我没有改变任何东西)。

第二部分将更加棘手,如何使其适用于多个数组...我正在考虑创建一个数组:depots = [depot1,depot2...] 然后将代码更改为“depots.length in for loop but even 1 array proves to be problematic.

var depot1 = ["device1", "device2", "device3"];
var depot1 = ["device1", "device2", "device3"];

function _depot(value) {
if (value) {
var depotCheckCase = value.toUpperCase();

for (var i = 0; i < depot1.length; i++) {
if (depotCheckCase == depot1[i]) {
return "Depot 1";
} else {
return false;
}
}
}
}

最佳答案

它只检查第一个条目,因为在 if/else 的两个分支中都有 return,所以无论如何,第一个循环迭代将终止函数。

相反,将 return false; 移动到循环之外的末尾。

其他几个问题:

  • 您声明了同一个变量两次。您的第二个 var depot1 = ... 最终只是一个赋值(但由于它分配的数组与第一个数组具有相同的条目,您可能不会注意到)。
  • 您强制将值检查为大写,但对您正在检查的条目不执行相同的操作。

解决所有这些问题:

var depot1 = ["device1", "device2", "device3"];

function _depot(value) {
if (value) {
var depotCheckCase = value.toUpperCase();

for (var i = 0; i < depot1.length; i++) {
if (depotCheckCase == depot1[i].toUpperCase()) {
return "Depot 1";
}
}
return false;
}
}

console.log(_depot("device2")); // "Depot 1"
console.log(_depot("device8")); // false

Any idea how can I combine it with checking against second/third array?

你有两个选择:

  1. 额外的循环(最简单的)。
  2. 找到最长数组的长度,将其用作循环最大值,并在比较之前检查 undefined。由于当 n 大于或等于长度时数组上的 [n] 会给你 undefined,你可以在执行之前检查toUpperCase.

这是第二个:

var depot1 = ["device1", "device2", "device3"];
var depot2 = ["device4", "device5"];
var depot3 = ["device6", "device7", "device8", "device9"];

function _depot(value) {
if (value) {
var depotCheckCase = value.toUpperCase();
var max = Math.max(depot1.length, depot2.length, depot3.length);
var entry;
for (var i = 0; i < max; i++) {
entry = depot1[i];
if (entry !== undefined && depotCheckCase === entry.toUpperCase()) {
return "Depot 1";
}
entry = depot2[i];
if (entry !== undefined && depotCheckCase === entry.toUpperCase()) {
return "Depot 2";
}
entry = depot3[i];
if (entry !== undefined && depotCheckCase === entry.toUpperCase()) {
return "Depot 3";
}
}
return false;
}
}

console.log(_depot("device2")); // "Depot 1"
console.log(_depot("device8")); // "Depot 3"
console.log(_depot("device5")); // "Depot 2"
console.log(_depot("device10")); // false

您可以给自己一个数组数组,然后循环执行,而不是重复逻辑。我把它留给读者作为练习。 :-)

关于javascript - Google Apps javascript 遍历多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51455235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com