2016-09-13 2 views
-2

Каков наиболее эффективный/элегантный способ повторения значений объектов в JavaScript?Итерирование значений объектов в JavaScript

В качестве примера предположим, что следующий объект: let myObj = {p1: "v1", p2: "v2"}

+0

Попытайтесь найти «свойства итерации объекта stackoverflow итерации». –

+0

@torazaburo Я сделал, и результаты либо устарели, либо неполны, либо обсуждают рамки. Обратите внимание, что я также опубликовал ответ на свой вопрос, пытаясь обобщить возможные решения в современных ES. –

+0

http://stackoverflow.com/questions/8312459/iterate-through-object-properties также имеет полезные ответы, хотя некоторые из них довольно глубоко погребены. –

ответ

1

ECMAScript 2017:

Если ваша целевая платформа поддерживает Object.values:

Object.values(myObj).forEach(value => /* do something */) 

Если вам нужны имена свойств, а также, вы можете использовать Object.entries в сочетании с array destructuring:

Object.entries(myObj).forEach(([key, value]) => /* do something */) 

ECMAScript 5:

Если вы должны быть обратно совместимы и не хотят использовать polyfill:

Object.keys(myObj).map(prop => myObj[prop]).forEach(value => /* do something */) 

Старые версии:

Обратите внимание, что for...in выполняет итерации над свойствами прототипа, поэтому вам необходимо отфильтровать их, используя Object.prototype.hasOwnProperty.

for (var key in myObj) { 
    if (myObj.hasOwnProperty(key)) { 
    var value = myObj[key]; 
    // do something 
    } 
} 
+1

Для полноты также выведите 'for (let [ключ, значение] объекта Object.entries (myObj))'. –