1

その中に8つの値を持つ配列があります。同じ量の値を持つ別の配列があります。これらの配列を互いに単純に差し引くことはできますか?

次に例を示します。

var firstSet =[2,3,4,5,6,7,8,9]
var secondSet =[1,2,3,4,5,6,7,8]

firstSet - secondSet =[1,1,1,1,1,1,1,1] //I was hoping for this to be the result of a substraction, but I'm getting "undefined" instead of 1..

これはどのように適切に行う必要がありますか?

4

5 に答える 5

2

このような:

var newArray = [];
for(var i=0,len=firstSet.length;i<len;i++)
  newArray.push(secondSet[i] - firstSet[i]);

secondSetと同じ数(またはそれ以上)の数が予想されることに注意してくださいfirstSet

于 2012-08-15T08:43:07.773 に答える
2

これを試してみてください:

for (i in firstSet) {
    firstSet[i] -= secondSet[i];
}
于 2012-08-15T08:44:34.050 に答える
0

要素ごとの減算は機能するはずです:

var result = [];

for (var i = 0, length = firstSet.length; i < length; i++) {
  result.push(firstSet[i] - secondSet[i]);
}

console.log(result);
于 2012-08-15T08:43:27.337 に答える
0
var firstSet = [2,3,4,5,6,7,8,9]
var secondSet = [1,2,3,4,5,6,7,8]

var sub = function(f, s) {
    var st = [], l, i;
    for (i = 0, l = f.length; i < l; i++) {
        st[i] = f[i] - s[i];
    }

    return st;
}

console.log(sub(firstSet, secondSet));​
于 2012-08-15T08:44:53.680 に答える
0

あなたが求めているのは、Haskellの「zipWith」関数のようなものです

"zipWith(-)xs ys"、またはJavascript構文では "zipWith(function(a、b){return a --b;}、xs、ys)"は[(xs [0] --ys[0]の配列を返します)、(xs [1] --ys [1])、...]

Underscore.jsライブラリには、この種の機能を備えた優れた関数がいくつかあります。zipWithはありませんが、配列xs、ysのペアをペアの配列[[xs [0]、ys [0]]、[xs [1]、ys [ 1]]、...]、これから減算関数を次のようにマッピングできます。

_.zip(xs、ys).map(function(x){return x [0] --x [1];})

これは興味深いhttps://github.com/documentcloud/underscore/issues/145を見つけることができます

于 2012-08-15T09:37:17.517 に答える