Как я могу извлечь значения свойств объекта JavaScript в массив?
учитывая объект JavaScript:
var dataObject = {
object1: {id: 1, name: "Fred"},
object2: {id: 2, name: "Wilma"},
object3: {id: 3, name: "Pebbles"}
};
как эффективно извлечь внутренние объекты в массив? мне не нужно поддерживать ручку на Объект[n] идентификаторы.
var dataArray = [
{id: 1, name: "Fred"},
{id: 2, name: "Wilma"},
{id: 3, name: "Pebbles"}]
12 ответов:
С помощью подчеркивание:
var dataArray = _.values(dataObject);
предполагая, что ваш dataObject определен так, как вы указали, вы делаете это:
var dataArray = []; for (var key in dataObject) dataArray.push(dataObject[key]);и в конечном итоге dataArray заполняется внутренними объектами.
С помощью принято отвечать и зная, что
ES2017 с помощью
Object.values:const dataObject = { object1: { id: 1, name: "Fred" }, object2: { id: 2, name: "Wilma" }, object3: { id: 3, name: "Pebbles" } }; const valuesOnly = Object.values(dataObject); console.log(valuesOnly)
[оказывается, мой ответ похож на @Anonymous, но я держу свой ответ здесь, так как он объясняет, как я получил свой ответ].
исходный объект имеет три свойства (т. е. 3 ключа и 3 значения). Это предполагает, что мы должны использовать
Object.keys()преобразовать его в массив с 3 значениями.var dataArray = Object.keys(dataObject); // Gives: ["object1", "object2", "object3" ]теперь у нас есть 3 значения, но не 3 значения, которые мы ищем. Итак, это предполагает, что мы должны использовать
Array.prototype.map().var dataArray = Object.keys(dataObject).map(function(e) { return dataObject[e]; } ); // Gives: [{"id":1,"name":"Fred"},{"id":2,"name":"Wilma"},{"id":3,"name":"Pebbles"}]
может быть, немного многословный, но надежный и быстрый
var result = []; var keys = Object.keys(myObject); for (var i = 0, len = keys.length; i < len; i++) { result.push(myObject[keys[i]]); }

Comments