2017-02-15 7 views
0

が動作していない、私はいくつかのケースではjsは、配列のマップ機能は、JavaScriptで

array = [true, false] 

である配列を、持っている、私は上記を実行した後、この配列

array.map(item => { 
    item = false 
}) 

を初期化しようとしていますコードは、配列は変更されていない、それはまだです[true, false]

だから.map機能が信頼できない場合がありますか?


ONE MORE QUESTION: 私の次のコードを実行した後、配列が変更されます。どうして?

let array = [{id:1, checked: false}, {id:2, checked:true}] 
array.map(item => { 
    item.checked = true 
}) 

アレイは[{id:1, checked: true}, {id:2, checked:true}]

+0

.MAP関数は元の配列を変更しない、それはあなたが使用する必要があり、別の配列を返します。 –

答えて

1

JavaScriptのArrayマップ()メソッド

*)は、すべての配列要素のための関数を呼び出した結果を新しい配列を作成し、指定された関数を配列内の各要素に対して1回ずつ呼び出します。

注:map()メソッドは値のない配列要素の関数を実行せず、元の配列も変更しません。

more details

2

アレイマップ機能が正常に動作しているになります。 map()メソッドは、この配列のすべての要素に提供された関数を呼び出した結果で新しい配列を作成します。 map()は、呼び出された配列を変更しません。

var array = [true, false] 
 

 

 

 
var new_array = array.map(function(item) { 
 
    return false; 
 
}); 
 

 
console.log(array) 
 
console.log(new_array)

-1

.map()方法は変更できません、その戻り値をチェックしてください:関数型プログラミングで

var arr2 = array.map(item => false) 
console.log(arr2) 

を、その値が頻繁に変更しないことをお勧めします、とJavaScriptはそれを借りています。少なくとも.map().reduce()の場合はこれが当てはまります。 .map()をよくご確認ください。

2

あなたのマッピングが単純である場合は、あなたが行うことができます:

var array = [true, false]; 
array = array.map(_ => false); 

console.log(array); 
// [false, false] 
+0

ここでアンダースコアを使用する理由ありがとう –

+0

変数名としてアンダースコアを使用することは、変数を実際に使用する予定がない場合に使用されることがあります。純粋にスタイルのものです。 – Scovetta

関連する問題