36

Как перебрать или перечислить объекты в JavaScript?

15

У меня есть объект JavaScript, как показано ниже:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

Как мне пройтись по всем элементам объекта p (то есть по p1, p2, p3 и т.д.) и получить их ключи и значения?

4 ответ(ов)

0

В ответ на ваш вопрос: после того как я просмотрел все ответы здесь, могу сказать, что метод hasOwnProperty не требуется для моего случая, так как мой JSON-объект чистый. Нет смысла добавлять дополнительную обработку на JavaScript. Я использую следующий код:

for (var key in p) {
    console.log(key + ' => ' + p[key]);
    // key — это имя ключа
    // value — это p[key]
}

Таким образом, в вашем случае hasOwnProperty не нужен, если вы уверены, что объект не содержит наследуемых свойств.

0

Вы можете просто перебрать его следующим образом:

for (var key in p) {
  alert(p[key]);
}

Обратите внимание, что key не будет принимать значение свойства, это просто индекс.

0

В данном коде происходит итерация по объекту 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 для объектов и его недопустимость для массивов следует учитывать, чтобы избежать неожиданных результатов.

0

Вам нужно сделать код более читаемым и при этом оставить его однострочным? Вы можете использовать метод forEach, который лучше подходит для побочных эффектов, таких как вывод в консоль. Вот пример:

Object.entries(myObject).forEach(([key, value]) => console.log(key, value));

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь