какое использование метод javascript forEach имеет (что карта не может сделать)?

Единственная разница, которую я вижу в карте и foreach, является этим map возвращает массив и forEach не. Однако я даже не понимаю последнюю строку forEach метод"func.call(scope, this[i], i, this);". Например, не"this"и"scope"обращение к тому же объекту и не this[i] и i обращение к текущему значению в цикле?

Я заметил на другом сообщении, кто-то сказал "Использование forEach когда Вы хотите сделать что-то на основе каждого элемента списка. Вы могли бы добавлять вещи к странице, например. По существу замечательно для того, когда Вы хотите "побочные эффекты". Я не знаю то, что предназначено побочными эффектами.

Array.prototype.map = function(fnc) {
    var a = new Array(this.length);
    for (var i = 0; i < this.length; i++) {
        a[i] = fnc(this[i]);
    }
    return a;
}

Array.prototype.forEach = function(func, scope) { 
    scope = scope || this; 
    for (var i = 0, l = this.length; i < l; i++) {
        func.call(scope, this[i], i, this); 
    } 
}

Наконец, есть ли любое реальное использование для этих методов в JavaScript (так как мы не обновляем базу данных) кроме управлять числами как это:

alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript.

Спасибо за любой ответ.

89
задан hippietrail 9 March 2016 в 10:54
поделиться

2 ответа

Существенная разница между map и forEach в вашем примере заключается в том, что forEach работает с исходными элементами массива, тогда как map в результате явно возвращает новый массив.

С помощью forEach вы выполняете некоторые действия с каждым элементом исходного массива и при необходимости изменяете его. Метод forEach запускает функцию, которую вы предоставляете для каждого элемента, но ничего не возвращает ( undefined ). С другой стороны, map проходит по массиву, применяет функцию к каждому элементу, а выдает результат в виде нового массива .

«Побочным эффектом» forEach является то, что исходный массив изменяется. «Отсутствие побочного эффекта» с map означает, что при идиоматическом использовании исходные элементы массива не изменяются; новый массив - это взаимно-однозначное сопоставление каждого элемента в исходном массиве - преобразование сопоставления является вашей предоставленной функцией.

Тот факт, что здесь нет базы данных, не означает, что вам не придется работать со структурами данных, что, в конце концов, является одной из сущностей программирования на любом языке. Что касается вашего последнего вопроса, ваш массив может содержать не только числа, но и объекты, строки, функции и т. Д.

93
ответ дан 24 November 2019 в 07:16
поделиться

Вы можете использовать карту , как если бы это была forEach .

Однако он сделает больше, чем должен.

область видимости может быть произвольным объектом; это ни в коем случае не обязательно это .

Что касается реального использования map и forEach , а также спросить, есть ли реальное использование для для или , в то время как петли.

3
ответ дан 24 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: