Как перебрать или перечислить объекты в JavaScript?
У меня есть объект JavaScript, как показано ниже:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Как мне пройтись по всем элементам объекта p (то есть по p1, p2, p3 и т.д.) и получить их ключи и значения?
4 ответ(ов)
В ответ на ваш вопрос: после того как я просмотрел все ответы здесь, могу сказать, что метод hasOwnProperty не требуется для моего случая, так как мой JSON-объект чистый. Нет смысла добавлять дополнительную обработку на JavaScript. Я использую следующий код:
for (var key in p) {
console.log(key + ' => ' + p[key]);
// key — это имя ключа
// value — это p[key]
}
Таким образом, в вашем случае hasOwnProperty не нужен, если вы уверены, что объект не содержит наследуемых свойств.
Вы можете просто перебрать его следующим образом:
for (var key in p) {
alert(p[key]);
}
Обратите внимание, что key не будет принимать значение свойства, это просто индекс.
В данном коде происходит итерация по объекту p с использованием цикла for...in. На каждой итерации в переменной key будет храниться ключ текущего свойства объекта p, и с помощью alert(p[key]) выведется значение этого свойства.
Важно отметить, что for...in можно использовать и для массивов, однако в этом случае будет происходить итерация не только по индексам элементов массива, но и по всем его свойствам, таким как length и любым другим, которые могли быть добавлены в массив. Поэтому для безопасной итерации по массиву лучше использовать методы forEach, for...of или обычный for цикл.
Пример более безопасной итерации по массиву:
let arr = [1, 2, 3];
for (let value of arr) {
alert(value);
}
Таким образом, использование for...in для объектов и его недопустимость для массивов следует учитывать, чтобы избежать неожиданных результатов.
Вам нужно сделать код более читаемым и при этом оставить его однострочным? Вы можете использовать метод forEach, который лучше подходит для побочных эффектов, таких как вывод в консоль. Вот пример:
Object.entries(myObject).forEach(([key, value]) => console.log(key, value));
Этот вариант сохраняет однострочный формат, но считывается чуть легче, поскольку forEach явно указывает, что мы производим действие для каждого элемента, а не трансформацию массива.
Цикл по массиву в JavaScript
Как перебрать обычный объект JavaScript с объектами в качестве элементов?
Обход массива и удаление элементов без нарушения цикла for
Как выйти из вложенных циклов в JavaScript?
Получение счетчика цикла/индекса с помощью синтаксиса for…of в JavaScript