1

このデータが最終的にグリッドをレイアウトするために使用されるという点で、値の位置が重要な配列の配列があります。

[[a,b,c,d],[a,b,c,d][a,b,c,d],[a,b,c,d]] // Original data

アクションに基づいて、この「データセット」内の値は変更できますが、サイズは変更されません。

[[a,b,c,d],[a,b,b,b][a,c,c,c],[a,b,c,d]] // Modified data

私がやりたいことは、デルタ値のみを含むデータセットを返すことです:

[[null,null,null,null,],[null,null,b,b],[null,c,null,c],[null,null,null,null,]]

今、私はデータセットの最大 X と Y を常に知っており、元のデータセットを単純にループして、その値を対応する値と比較し、新しい配列を作成することができますが、より効率的な達成方法があるようですこれ。

そうは言っても、私のjs-fuはせいぜい最小限であり、それが私がここで問題を引き起こしている理由です. これを達成するための言語提供の方法はありますか? 推奨されるアプローチは?等?

4

2 に答える 2

2

少しの配列マッピングでうまくいくはずです。

ここにフィドルがあります: http://jsfiddle.net/C8jnr/

以下を考えると:

var arr_A = [[a,b,c,d],[a,b,c,d],[a,b,c,d],[a,b,c,d]];
var arr_B = [[a,b,c,d],[a,b,b,b],[a,c,c,c],[a,b,c,d]];

function deltaArrays(arr1, arr2)
{
    return arr1.map(function(el_arr,i,arr){
        return el_arr.map(function(el, j){
            return (el == arr2[i][j]) ? null : arr2[i][j];
        });
    });
}

この 2 つで deltaArrays を呼び出すと、予想されるデルタ配列が得られます。

deltaArrays(arr_A, arr_B) = [[null,null,null,null,],[null,null,b,b],[null,c,null,c],[null,null,null,null,]]
于 2013-10-23T21:47:58.090 に答える