For each в языке сценариев JavaScript?

В Java ты можешь использовать цикл for each говоря:

for (elemento e : array)

Также в jQuery:

$.each(arr, function() {

В языке сценариев JavaScript я знаю, что я могу делать:

for (var i = 0; i > 10; i ++)

Но есть какой-то способ делать for each в чистом языке сценариев JavaScript?

25
задан 03.03.2019, 10:02
4 ответа

СПРАШИВАЕТ: ВїHay какой-то способ реализовывать цикл for-each в чистом языке сценариев JavaScript?

ОТВЕТ: Несколько способов он должен делать это, так для Arrays как Объектов.


Способа повторять на Arrays и Объектах в языке сценариев JavaScript


MГ©todo Array#forEach

Array.prototype.forEach (callback (стоимость, индекс, array)) MГ©todo Array.forEach [SГіlo Arrays]

var miArray = [ 2, 4, 6, 8, 10 ];
miArray.forEach( function(valor, indice, array) {
    console.log("En el índice " + indice + " hay este valor: " + valor);
});

MГ©todo Object#keys коктейль с MГ©todo Array#forEach

Object.keys (объект) , Чтобы получать в ассоциативном array свойства Объекта. AportaciГіn eledgaar

var obj = {
  first: "John",
  last: "Doe"
}

// ES6
Object.keys(obj).forEach(key => console.log(key, obj[key]))

// ES5
Object.keys(obj).forEach(function(key) {
  console.log(key, obj[key])
})

Цикл for-i

for ([выражение - инициал]; [условие]; [выражение - финал]) решение Цикл for-i [SГіlo Arrays]

var miArray = [ 2, 4, 6, 8, 10 ];
for (var i = 0; i < miArray.length; i+=1) {
  console.log("En el índice '" + i + "' hay este valor: " + miArray[i]);
}

Цикл for-in

for (переменная in я возражаю) изрекает Arrays [не рекомендуемый] и Объекты [Рекомендуемые]

var miArray = [ 2, 4, 6, 8, 10 ];
for (var indice in miArray) {
  console.log("En el índice '" + indice + "' hay este valor: " + miArray[indice]);
}
    
var miObjeto = { "marca":"audi", "edad":2 };
for (var propiedad in miObjeto) {
  if (miObjeto.hasOwnProperty(propiedad)) {
    console.log("En la propiedad '" + propiedad + "' hay este valor: " + miObjeto[propiedad]);
  }
}

Цикл for-of

for (переменная of я возражаю) изрекает Для любого типа Итерабле (Arrays)

var miArray = [ 2, 4, 6, "hola", "mundo" ];
for (var valor of miArray) {
  console.log("Valor: " + valor);
}

ConclusiГіn:

SГ - ты нуждаешься в том, чтобы повторить на Array используй mГ©todo forEach , и если ты нуждаешься в том, чтобы повторить на объекте, используй mГ©todo for-in .

40
ответ дан 03.12.2019, 21:11
  • 1
    " for-in" не эквивалентный в " foreach" в том же documentaci и # 243; n, который ты поместил, объясняют, потому что это плохая идея использовать это, чтобы пробегать arrays . –  Diego Torres 25.07.2016, 20:51
  • 2
    У тебя есть raz и # 243; n, прямо сейчас я это исправляю, ошибка м и # 237; или. –  dddenis 26.07.2016, 00:52
  • 3
    Как добавочное замечание цикл for-of может быть использованным для любого типа iterable (договоренности, arguments объект, генераторы, и т.д.) –  enrique7mc 27.07.2016, 22:23
  • 4
    В и # 241; adido @enrique7mc, спасибо. –  dddenis 28.07.2016, 13:31

The foreach using await and async, check the next code:

const waitFor = (ms) => new Promise(r => setTimeout(r, ms));
[1, 2, 3].forEach(async (num) => {
  await waitFor(50);
  console.log(num);
});
console.log('Done');
0
ответ дан 03.12.2019, 21:11
  • 1
    Спасибо за твой contribució n, помни, что официальный язык сайта - Españ ol, переведи твой вопрос и он рекомендуется explicació добавлять; n, привет. –  Jorgesys♦ 29.10.2019, 17:05

Как заметка и исправляя комментарий @dddenis на повторении объекта, комментировании, что tambiГ©n могут пробегаться объекты с этим mГ©todo.

Строитель Обхект размещает mГ©todo Object.keys () , которые возвращают Array свойств данного объекта.

Object.keys(obj)

Таким образом podrГ-хозяева повторять вышеупомянутого Array и соглашаться на стоимость вышеупомянутых свойств следующего способа:

const obj = {
  first: "John", 
  last: "Doe"
}

console.log(Object.keys(obj))  // ["first", "last"]

// ES6
Object.keys(obj).forEach(key => console.log(key, obj[key]))

// ES5
Object.keys(obj).forEach(function (key) {
  console.log(key, obj[key])
})
4
ответ дан 03.12.2019, 21:11

Array.prototype.forEach (callbackfn [thisArg])

 
var arr = ["uno", "dos", "tres"];

arr.forEach(function(elemento) {
    console.log(elemento);
});

forEach прими функцию как callback. Переместив эту функцию, которая действует как iterador, та же самая названа для каждого элемента Array.

*Заметь: Функционируй начиная с ECMAScript 5.


Callback

Функция, которая перемещена, как callback он принимает 3 параметра: стоимость элемента, индекса и ссылки на array, который повторен. Последние 2 опциональные (первый пример только перемещал элемент). Если мы также хотели использовать индекс:

var arr = [];
arr[0]  = "cero";
arr[10] = "diez";
arr[20] = "veinte";

arr.forEach(function(elemento, indice) {
    console.log("pos=", indice, "valor=", elemento);
});

Кроме того, нужно осветлять, что .forEach не свора охотничьих собак абсолютно в array. Если меняется стоимость elemento, array он не окажется измененным (хотя да ему могло бы удаваться ссылаться, чтобы менять стоимость).


Другие сходные функции

  • .every() Он выходит из цикла как только функция возвращает false.
  • .some() Он выходит из цикла как только функция возвращает true.
9
ответ дан 03.12.2019, 21:11

Теги

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