web-dev-qa-db-fra.com

Comment puis-je extraire les valeurs de propriété d'un objet JavaScript dans un tableau?

Étant donné un objet JavaScript:

var dataObject = {
   object1: {id: 1, name: "Fred"}, 
   object2: {id: 2, name: "Wilma"}, 
   object3: {id: 3, name: "Pebbles"}
};

Comment puis-je extraire efficacement les objets internes dans un tableau? Je n'ai pas besoin de conserver une poignée sur l'objet [n] ID.

var dataArray = [
    {id: 1, name: "Fred"}, 
    {id: 2, name: "Wilma"}, 
    {id: 3, name: "Pebbles"}]
59
Matt Norris
var dataArray = [];
for(var o in dataObject) {
    dataArray.Push(dataObject[o]);
}
63
Murali VP
var dataArray = Object.keys(dataObject).map(function(k){return dataObject[k]});
70
Anonymous

version ES6:

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

Utilisation de souligné :

var dataArray = _.values(dataObject);
23
rzymek

Avec jQuery, vous pouvez le faire comme ceci -

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

Démo

14
Mohammad Adil

En supposant que votre dataObject est défini comme vous l'avez spécifié, vous procédez comme suit:

var dataArray = [];
for (var key in dataObject)
    dataArray.Push(dataObject[key]);

Et finissez par avoir dataArray rempli d'objets internes.

6
Marko Dumic

ES2017 utilisant 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)
6
ryanpcmcquen

En utilisant la réponse acceptée et en sachant que Object.values ​​() est proposé dans ECMAScript 2017 Draft vous pouvez étendre Object avec la méthode:

if(Object.values == null) {
    Object.values = function(obj) {
        var arr, o;
        arr = new Array();
        for(o in obj) { arr.Push(obj[o]); }
        return arr;
    }
}
6
marverix

[Il s'avère que ma réponse est similaire à @Anonymous, mais je garde ma réponse ici car elle explique comment j'ai obtenu ma réponse].

L'objet d'origine a TROIS propriétés (soit 3 clés et 3 valeurs). Cela suggère que nous devrions utiliser Object.keys() pour le transformer en un tableau avec 3 valeurs.

var dataArray = Object.keys(dataObject);
// Gives: ["object1", "object2", "object3" ]

Nous avons maintenant 3 valeurs, mais pas les 3 valeurs que nous recherchons. Donc, cela suggère que nous devrions utiliser 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"}]
4
Stephen Quan

Peut-être un peu bavard, mais robuste et rapide

var result = [];
var keys = Object.keys(myObject);
for (var i = 0, len = keys.length; i < len; i++) {
    result.Push(myObject[keys[i]]);
}
3
martyglaubitz

La méthode Object.values ​​() est désormais prise en charge. Cela vous donnera un tableau de valeurs d'un objet.

Object.values(dataObject)

Voir: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/values

2
Sambhav Sharma

Si vous utilisez d3. vous pouvez faire d3.values(dataObject) qui donnera

enter image description here

1
jetpackdata.com