10

基本的に、Underscore.jsを使用して_.each()またはで次の動作を表現したいと思います。_.map()

a = [1, 2, 3]
b = [3, 2, 1]

# Result list
c = [0, 0, 0]

for i in [0 .. a.length - 1]
   c[i] = a[i] + b[i]

これは、Matlab(私の第一言語)自体で間違いなく可能です。

c = arrayfun(@(x,y) x+y, a, b)

直感的には、アンダースコアの構文は次のようになります。

c = _.map(a, b, function(x, y){ return x + y;})

ただし、その引数リストは受け入れられません。2番目のパラメーターは呼び出し可能な関数であると想定されています。

オプションの「context」引数は、この状況では役に立ちません。

4

1 に答える 1

15

これにはzip (これも underscore.js から) を使用します。このようなもの:

var a = [1, 2, 3];
var b = [4, 5, 6];
var zipped = _.zip(a, b);
// This gives you:
// zipped = [[1, 4], [2, 5], [3, 6]]

var c = _.map(zipped, function(pair) {
  var first = pair[0];
  var second = pair[1];
  return first + second;
});

// This gives you:
// c = [5, 7, 9]

作業例:

于 2012-04-13T01:08:48.553 に答える