カスタムシート関数に範囲を渡すと範囲は、そうでない場合は、一つのセル、または
double配列で構成されている場合、それは、
- 単一の値のいずれかを取得します。範囲が1次元であっても、たとえば、列範囲には
[[1], [2], [3]]
、行範囲には[[1, 2, 3]]
が得られます。
DIFF
関数は、引数が通常の値の配列であることを前提としています。だから、二重配列を平坦化するか、単一の値を配列に変換する必要があります。これは、関数flatten
の機能です。
function DIFF(a, b) {
a = flatten(a);
b = flatten(b);
return a.filter(function(v) {
return b.indexOf(v) === -1;
}).length
}
(脇:。三オペレータ: ? true : false
ここに冗長であったので、私はそれを除去)
function flatten(arg) {
if (arg.constructor === Array) {
return arg.reduce(function(a, b) {
return a.concat(b);
});
}
else {
return [arg];
}
}
そしてDIFF
このようにすることができ