0

整数の配列を取得し、偶数の場合は要素が増加し、奇数の場合は要素が減少した配列を返すコードを記述する必要があります。フィルターとマップの JavaScript 関数を試してみました。ここにコードがあります:

var test=[2,5,8,13];
var my_function = (some_array) => some_array.filter((num,index,array) => num % 2 == 0 ? array[index]=num+1 : array[index]=num-1 );
console.log(my_function(test));
console.log(test);

このコードは、あなたが持っている地図を使用しているときに [2, 5, 8, 13] [3, 4, 9, 12] を出力します

var test=[2,5,8,13];

var my_function = (some_array) => some_array.map((num,index,array) => num % 2 == 0 ? array[index]=num+1 : array[index]=num-1 );
console.log(my_function(test));
console.log(test);

このコードは [3, 4, 9, 12] [3, 4, 9, 12] を出力します。

ご覧のとおり、filter を使用するとオブジェクトが複製され、map を使用するとオブジェクトが変更されます。MDN のドキュメントには次のように書かれています。

map() メソッドは、この配列内のすべての要素に対して指定された関数を呼び出した結果で新しい配列を作成します。

マップとフィルターを間違った方法で使用していますか、それともドキュメントが間違っていますか? この動作を chrome と firefox でテストしました。

実際、私は間違ったマップ機能を使用していました。ここにマップコードが修正されました

var my_function = (some_array) => some_array.map((num) => num % 2 == 0 ? num+1 : num-1 );
4

3 に答える 3

-1

必要なことを行うには、次のようにマップを使用できます。

var result = test.map(function(m){ return m % 2 === 0 ? m+1 : m-1 });
console.log(result);

フィルターも可能ですが、個人的にはマップの方が好みです。map は結果を含む新しい配列を返すことに注意してください。元の配列を変更しないように注意してください。

于 2016-02-11T09:55:55.360 に答える