Javascript 使用JSON.search在defaint.js中返回多个对象

Javascript 使用JSON.search在defaint.js中返回多个对象,javascript,json,Javascript,Json,我有一个带有属性的Json对象。我使用Deviant.js搜索JSON,命令类似于XPath 是否有一个函数可以检索以前缀开头的json的所有对象?例如,在上面的屏幕截图中,所有以“en”开头的对象?您可以使用Forcycle添加hasOwnProperty如下检查: var filteredObject = {}; //obj - your source object for(i in obj) { if(obj.hasOwnProperty(i) && i.inde

我有一个带有属性的Json对象。我使用Deviant.js搜索JSON,命令类似于XPath


是否有一个函数可以检索以前缀开头的json的所有对象?例如,在上面的屏幕截图中,所有以“en”开头的对象?

您可以使用
For
cycle添加
hasOwnProperty
如下检查:

var filteredObject = {};
//obj - your source object

for(i in obj) { 
  if(obj.hasOwnProperty(i) && i.indexOf('en_') > -1){
    filteredObject[i] = obj[i];
  }
}

请尝试此XPath选择器<代码>/*/*[以(name(),“en戡”)开头]

看起来它和违抗很好用。js@1.3.1

var x={
“东西”:“酷”,
“恩_项目”:“棒极了”,
“en_other”:“太棒了”,
“内部”:{
“en_thing”:“不那么酷”
},
“en_yetanother”:“太棒了”,
“notit”:“垃圾”
}
警报(JSON.search(x,'/*/*[以(name(),“en”)]'开头)

很抱歉,我正在使用definant.js来避免循环。这不是我正在寻找的理想解决方案:(哦,对不起,我没有注意到我以前尝试过这个。它没有给我带来我需要的东西。@KiranJoshi在definant.js网站上为我工作(见截图).设置一个JSFIDLE来尝试一下吧..?你能检查一下我想要的标签只在一个级别上以“en_”开头,而不是该标签的子标签吗?嘿,比利,这给了我一些启示:)谢谢你,伙计:)但是它不符合我的要求(可能我的要求是wierd)。我已经在这里更新了JSFIDLE[]看一看。我的要求是从JSON搜索中获取数组数组,但我理解JSON。搜索只会提供数组,这对我来说可能并不理想。不过,我认为你的答案是正确的,结束这个话题:)非常感谢你抽出时间。