2016-06-14 10 views

答えて

0

カスタムシート関数に範囲を渡すと範囲は、そうでない場合は、一つのセル、または

  • 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このようにすることができ

  • 関連する問題