it-swarm-ja.tech

JavaScriptオブジェクトのプロパティ値を配列に抽出するにはどうすればよいですか?

JavaScriptオブジェクトが与えられた場合:

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

内部オブジェクトを効率的に配列に抽出するにはどうすればよいですか?object [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

ES6バージョン:

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

アンダースコア を使用:

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

JQueryを使用すると、次のようにできます-

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

デモ

14
Mohammad Adil

DataObjectが指定した方法で定義されていると仮定して、次の操作を行います。

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

そして、内部オブジェクトがdataArrayに取り込まれます。

6
Marko Dumic

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

受け入れられた答え を使用し、 Object.values()ECMAScript 2017 Draft で提案されていることを知って、メソッドでオブジェクトを拡張できます:

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

[私の回答は@Anonymousに似ていますが、回答をどのように取得したかを説明しているため、ここに回答を残します]。

元のオブジェクトには3つのプロパティ(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"}]
_
4
Stephen Quan

少し冗長かもしれませんが、堅牢で高速です

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

Object.values()メソッドがサポートされるようになりました。これにより、オブジェクトの値の配列が得られます。

Object.values(dataObject)

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

2
Sambhav Sharma

D3を使用する場合。あなたはd3.values(dataObject)を行うことができます

enter image description here

1
jetpackdata.com