Der Unterschied und die Verbindung zwischen Map und forEach

Der Unterschied und die Verbindung zwischen Map und forEach

1. Die gleichen Punkte:

1. 都是循环遍历数组中的每一项

2. 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)

3. 匿名函数中的this都是指向window

4. 只能遍历数组

2. Unterschiede:

1. map()会分配内存空间存储新数组并返回,forEach()不会返回数据。

2. forEach()允许callback更改原始数组的元素。map()返回新的数组。

3. Nutzungsszenarien:

1. forEach适合于你并不打算改变数据的时候。

2. map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)。

expandieren

1. foreach()

Es gibt keinen Rückgabewert!
使用方法:
    arr[].forEach(function(value,index,array){
            xxxxx
    })
  • Parameter: das aktuelle Element im Wertarray, der Index des aktuellen Elements, das ursprüngliche Array des Arrays;

  • Da das Array mehrere Elemente enthält, muss die übergebene anonyme Rückruffunktion mehrmals ausgeführt werden.

  • Theoretisch hat diese Methode keinen Rückgabewert, sondern durchläuft lediglich jedes Element im Array und ändert das ursprüngliche Array nicht. Sie können das ursprüngliche Array jedoch selbst über den Index des Arrays ändern.

      举个例子:
      var array = [1,3,5,9,7];  
      var res = array.forEach(function (item,index,input) {  
          input[index] = item*10;  
      })  
      console.log(res);//--> undefined;  
      console.log(array);//--> 通过数组索引改变了原数组; [10,30,50,90,70]
    

2. Karte()

Wenn es einen Rückgabewert gibt, können Sie ihn zurückgeben!
使用方法:
    arr[].map(function(value,index,array){
        xxx
        return xxx
    });
  • Parameter: das aktuelle Element im Wertearray, Index der Index des aktuellen Elements, Array das ursprüngliche Array;
  • Unterschied: Die Rückruffunktion von Map unterstützt den Rückgabewert. Was zurückgegeben wird, entspricht der Änderung dieses Elements im Array in was (es wirkt sich nicht auf das ursprüngliche Array aus, entspricht jedoch dem Klonen des ursprünglichen Arrays und des Klons). entsprechendes Element im Array dieser Kopie hat sich geändert);

Zum Beispiel:

var array = [1,3,5,7,9];  
var res = array.map(function (item,index,input) {  
    return item*10;   
})  
console.log(res);//[10, 30, 50, 70, 90]
console.log(array);// [1, 3, 5, 7, 9] 不变

Ich denke du magst

Origin blog.csdn.net/TC_DESpipi/article/details/128625829
Empfohlen
Rangfolge