Я хочу перебрать объекты, содержащиеся в массиве, и изменить свойства каждого из них. Если я сделаю это:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
Консоль должна вызывать каждый объект в массиве, верно? Но на самом деле он отображает только первый объект. если я консольный журнал массив вне цикла, все объекты появляются, так что там определенно больше.
Во всяком случае, вот следующая проблема. Как мне получить доступ, например, к Object1.x в массиве, используя цикл?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Это возвращает «неопределенный». Снова журнал консоли вне цикла говорит мне, что все объекты имеют значения для «х». Как мне получить доступ к этим свойствам в цикле?
В другом месте мне было рекомендовано использовать отдельные массивы для каждого из свойств, но я хочу убедиться, что сначала я исчерпал этот путь.
Спасибо!
javascript
arrays
iteration
FlyingLizard
источник
источник
j
это число. Вы определили это в верхней части вашего цикла.myArray
самом деле это не просто массив?#forEach
работает. Но вопрос был о петле.Ответы:
Используйте forEach его встроенную функцию массива.
Array.forEach()
:источник
forEach
это не поддерживается в IE 9. Не вините меня! Продукт моего работодателя поддерживает это!yourArray
что-то подобноеdocument.getElementsByClassName
, это будет HTMLCollection, а не массив. Тогда этот вопрос может быть полезным.forEach
блокирует и не поддерживаетawait
.for...of
Цикл будет.Некоторые случаи использования циклического перебора массива в функциональном программировании в JavaScript:
1. Просто перебрать массив
Примечание: Array.prototype.forEach (), строго говоря, не является функциональным способом, так как функция, которую он принимает в качестве входного параметра, не должна возвращать значение, которое, таким образом, не может рассматриваться как чистая функция.
2. Проверьте, проходит ли какой-либо из элементов массива тест
3. Преобразовать в новый массив
Примечание. Метод map () создает новый массив с результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.
4. Подведите итог конкретного свойства и рассчитайте его среднее
5. Создайте новый массив на основе оригинала, но не изменяя его
6. Подсчитайте количество каждой категории
7. Получить подмножество массива на основе определенных критериев
Примечание. Метод filter () создает новый массив со всеми элементами, которые проходят тест, реализованный предоставленной функцией.
8. Сортировать массив
9. Найти элемент в массиве
Метод Array.prototype.find () возвращает значение первого элемента в массиве, которое удовлетворяет предоставленной функции тестирования.
Ссылки
источник
const people = [ {name: "john", age:23}, {name: "john", age:43}, {name: "jim", age:101}, {name: "bob", age:67} ]; const sortByAge = people.map(p => { console.log(p.name) return p }).sort(function (p1, p2) { return p1.age - p2.age; }); console.log(sortByAge);
Вы можете использовать цикл for..of для цикла по массиву объектов.
Одна из лучших вещей о
for..of
циклов состоит в том, что они могут выполнять итерации не только над массивами. Вы можете выполнять итерации любого типа, включая карты и объекты. Убедитесь, что вы используете транспортер или что-то вроде TypeScript, если вам нужно поддерживать старые браузеры.Если вы хотите перебрать карту, синтаксис в основном такой же, как и выше, за исключением того, что он обрабатывает и ключ, и значение.
Я использую
for..of
циклы практически для всех видов итераций, которые я делаю в Javascript. Кроме того, одна из самых крутых вещей - они также работают с async / await.источник
источник
Вот пример того, как вы можете это сделать :)
источник
track
свойства для каждого элемента и присвоить его переменной для использования или интерполяции в другой части кода?Цикл массива объектов является довольно фундаментальной функциональностью. Это то, что работает для меня.
источник
myArray[j.x]
логически неверно.Используйте
(myArray[j].x);
вместоисточник
Это действительно просто, используя метод forEach начиная с ES5 +. Вы можете напрямую изменить каждое свойство каждого объекта в вашем массиве.
Если вы хотите получить доступ к определенному свойству для каждого объекта:
источник
Вот еще один способ перебора массива объектов (для этого необходимо включить в документ библиотеку jQuery).
источник
$.each
метода.Это будет работать. Цикл массива (yourArray). Затем переберите прямые свойства каждого объекта (eachObj).
источник
Итерация объекта массива с использованием jQuery (используйте второй параметр для печати строки).
источник
Это один из способов, как мне удалось этого добиться.
источник
Принятый ответ использует нормальную функцию. Так что публикация того же кода с небольшими изменениями с использованием функции стрелки на forEach
Также в $ .each вы можете использовать функцию стрелки, как показано ниже
источник
Будь осторожен со спиной Клещи (`)
источник
Это может кому-то помочь. Может быть, это ошибка в Node.
Это не работает:
Но это работает ...
Это тоже работает ...
НО просто изменение порядка не работает. Я предполагаю, что здесь есть какая-то внутренняя оптимизация, которая ломает Node.
Ошибка говорит, что массив не определен, но это не так: - / Node v11.15.0
источник