使用javascript在json数据中搜索密钥
当我不确定key2的位置时,如何获取key2的孩子使用javascript在json数据中搜索密钥,javascript,Javascript,当我不确定key2的位置时,如何获取key2的孩子 data:{ key1:{ child1:{}, child2:{} } key2:{ child21:{} } } 这将返回键名的字符串数组[“键1”、“键2”] 我认为你特别需要: var keys = Object.keys(data); 您可以通过以下方式将其转换为其子对象的数组: var childnames = Object.keys(data[key2]); var-key2children=[]; 对于
data:{
key1:{
child1:{},
child2:{}
}
key2:{
child21:{}
}
}
这将返回键名的字符串数组<代码>[“键1”、“键2”]
我认为你特别需要:
var keys = Object.keys(data);
您可以通过以下方式将其转换为其子对象的数组:
var childnames = Object.keys(data[key2]);
var-key2children=[];
对于(var i=0;i
编辑也许这有帮助
var key2children = [];
for(var i=0; i< childnames.length; i++){
key2children.push(data[key2][cildnames[i]);
}
//获取对象的子对象
函数getChildObjects(tgtobj){
var objchildren=[];
objectkeys=Object.keys(tgtobj);
对于(var i=0;i
必须使用for-in循环和递归来获取嵌套键
//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");
这是一个对象,只需使用键。
data.key2.child21
…或data[“key2”][“child21”]
如果在设计时不知道键,可以使用变量。位置是什么意思?请提供一些示例数据的文本结果。要输出“child21”或“{}”,还是别的?按照@ProfessorAllman的观点,对象中没有“位置”。只有键。顺序是不确定的,不应该被认为是固定的。(参见)如果此搜索是针对child21的属性,该怎么办?相同的代码将不起作用。您可以构建一个函数,将数据中对象的名称作为参数…我将创建一个。Posted。这是否适合您的需要?如果child21是数组呢?child21可以有任何有效值。child21是数据对象的键/属性。它是JSON字符串。它不能是数组。根据我对这个问题的理解,您试图找到对象的特定键/属性。如果您试图确定它是否是数组,那么您也可以将其添加到数组中。
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');