Как я могу извлечь значения свойств объекта 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"}]
1241   12  

12 ответов:

var dataArray = new Array;
for(var o in dataObject) {
    dataArray.push(dataObject[o]);
}
var dataArray = Object.keys(dataObject).map(function(k){return dataObject[k]});

С помощью подчеркивание:

var dataArray = _.values(dataObject);

версия ES6:

var dataArray = Object.keys(dataObject).map(val => dataObject[val]);

С jQuery, вы можете сделать это так -

var dataArray = $.map(dataObject,function(v){
     return v;
});

демо

предполагая, что ваш 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]]);
}

в случае, если вы используете d3. вы можете сделать d3.values(dataObject) Что даст

enter image description here

Comments

    Ничего не найдено.