作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对自定义 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?
你有两个选择:
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/
我是一名优秀的程序员,十分优秀!