data:{
key1:{
child1:{},
child2:{}
}
key2:{
child21:{}
}
}
key2の位置についてわからないときに、どのようにkey2の子を取得できますか?javascriptを使用してjsonデータ内のキーを検索する
data:{
key1:{
child1:{},
child2:{}
}
key2:{
child21:{}
}
}
key2の位置についてわからないときに、どのようにkey2の子を取得できますか?javascriptを使用してjsonデータ内のキーを検索する
var keys = Object.keys(data);
これは、キー名の文字列の配列を返します。
var childnames = Object.keys(data[key2]);
あなたはでそれは子供たちのしているそれらのオブジェクトの配列にこれを回すことができる::EDITはたぶんこのことができます?:
をvar key2children = [];
for(var i=0; i< childnames.length; i++){
key2children.push(data[key2][cildnames[i]);
}
私は特にあなたが必要だと思う["key1", "key2"]
//To get the children of an object
function getChildObjects(tgtobj){
var objchildren = [];
objectkeys = Object.keys(tgtobj);
for(var i=0; i< objectkeys.length; i++){
key2children.push(tgtobj[objectkeys[i]);
}
return objectchildren;
}
//This could be used to get the children of a child object in a function like this:
function getChildOjectsOfChildByName(tgtobj, name){
return getChildObjects(tgtobj[name]);
}
//usage example:
var key2childojects = getChildOjectsOfChildByName(data, "key2");
この検索がchild21のプロパティの場合はどうなりますか?同じコードは機能しません。 – user3738874
データの中にあるオブジェクトの名前を引数として取る関数を作ることができます...私はそれを作るでしょう。 – Grallen
。これはあなたのニーズに合っていますか? – Grallen
入れ子のキーを取得するには、forループと再帰を使用する必要があります。
function searchObj(obj, searVal){
for (ii in obj){
if(ii === searVal){
console.log(ii, ' -- my key');
} else{
console.log(ii, ' -- no key here');
searchObj(obj[ii], searVal);
}
}
}
searchObj(data, 'child21');
child21が配列の場合はどうなりますか? – user3738874
Child21は任意の有効な値を持つことができます。 Child21は、データオブジェクトのキー/プロパティです。それはJSON文字列です。配列にすることはできません。 –
質問の私の理解から、オブジェクトの特定のキー/プロパティを見つけようとしています。それが配列かどうかを判断しようとしているなら、それを同様に追加することができます。 –
これはオブジェクトです。キーを使用してください。 –
'data.key2.child21' ...または' data ["key2"] ["child21"] '設計時にキーを知らないと変数を使うことができます。 – brso05
ポジションはどういう意味ですか? –