在Google表格中区分两个用户范围,这在控制台中有效,但在工作表中不起作用。有人可以解释一下原因吗?
function DIFF(a, b) {
return a.filter(function(v){
return b.indexOf(v) === -1 ? true : false;
}).length
}
答案 0 :(得分:0)
将范围传递给自定义表单功能时,它会获得
[[1], [2], [3]]
,行范围为[[1, 2, 3]]
。您的DIFF
函数假定参数是普通的值数组。因此,您需要展平双数组,或将单个值转换为数组。这就是函数flatten
的作用。
function flatten(arg) {
if (arg.constructor === Array) {
return arg.reduce(function(a, b) {
return a.concat(b);
});
}
else {
return [arg];
}
}
然后DIFF
可以是这样的:
function DIFF(a, b) {
a = flatten(a);
b = flatten(b);
return a.filter(function(v) {
return b.indexOf(v) === -1;
}).length
}
(旁白:三元运算符: ? true : false
在这里是多余的,所以我删除了它。)