Edited at

JSONから、もっともプロパティの多い要素を取得する

More than 5 years have passed since last update.

やりたい事の説明が難しい。


js


var a = [
{id:1, name:"test", address:"tokyo"},
{id:2, name:"hoge"},
{id:3, name:"hello", address:"kyoto", tel:"090-1234"},
{id:4, name:"world", address:"saitama", tel:"090-5678", fax:"03-0000"},
{id:5, name:"shimizu", address:"gunma"},
];


上記の様な配列から、もっともプロパティの多い要素(この場合なら、id:4のデータ)を取り出す。

あまり必要となる場面は無いかも知れないが、次の一行で取得できる。


js

a.reduce(function(f, b){ return Object.keys(f).length > Object.keys(b).length ? f : b });

->{id: 4, name: "world", address: "saitama", tel: "090-5678", fax: "03-0000"}

Object.keysに渡せばキーの一覧が取得できる。


js

Object.keys(

a.reduce(function(f, b){
return Object.keys(f).length > Object.keys(b).length ? f : b;
})
)
->["id", "name", "address", "tel", "fax"]