Jquery 过滤JSON响应
我收到一个xhr的回复,如下所示:Jquery 过滤JSON响应,jquery,arrays,json,object,filter,Jquery,Arrays,Json,Object,Filter,我收到一个xhr的回复,如下所示: { "9994921432": { "name": "name 1", "ownerid": "543624" }, "9979509360": { "name": "some name", "ownerid": "765875" }, "9979524523": { "name": "some other name", "o
{
"9994921432": {
"name": "name 1",
"ownerid": "543624"
},
"9979509360": {
"name": "some name",
"ownerid": "765875"
},
"9979524523": {
"name": "some other name",
"ownerid": "215654"
},
"9979524523": {
"name": "some name",
"ownerid": "65893"
}
}
var response = '{ "9994921432": { "name": "the name", "ownerid": "543624" }, "9979509360": { "name": "some name", "ownerid": "765875" }, "9979524523": { "name": "some name", "ownerid": "215654" }, "9979524523": { "name": "some other name", "ownerid": "65893" } }';
var json = JSON.parse( '[' + response + ']' );
var filtered = json.filter( function ( item ) { return item.name == 'some name' } );
console.log( filtered );
我试着根据name的值进行过滤,如果可能的话,使用一行程序,我不能使用jQuery。我正在测试这样的东西:
{
"9994921432": {
"name": "name 1",
"ownerid": "543624"
},
"9979509360": {
"name": "some name",
"ownerid": "765875"
},
"9979524523": {
"name": "some other name",
"ownerid": "215654"
},
"9979524523": {
"name": "some name",
"ownerid": "65893"
}
}
var response = '{ "9994921432": { "name": "the name", "ownerid": "543624" }, "9979509360": { "name": "some name", "ownerid": "765875" }, "9979524523": { "name": "some name", "ownerid": "215654" }, "9979524523": { "name": "some other name", "ownerid": "65893" } }';
var json = JSON.parse( '[' + response + ']' );
var filtered = json.filter( function ( item ) { return item.name == 'some name' } );
console.log( filtered );
但它是空的
如何获得类似json的对象,但仅包含name==某个名称的对象?使用以下代码解决了此问题:
var response = '{ "9994921432": { "name": "the name", "ownerid": "543624" }, "9979509360": { "name": "some name", "ownerid": "765875" }, "9979524523": { "name": "some name", "ownerid": "215654" }, "45756745675": { "name": "some name", "ownerid": "65893" } }';
var json = JSON.parse( response );
var filtered = {};
Object.keys( json ).forEach( function( key ) {
if( json[key].name == "some name" ) {
filtered[key] = json[key];
}
});
console.log( filtered );
虽然不是我想要的那一行,但它确实起到了作用。尝试以下方法。您必须循环对象,而不是数组 var response={9994921432:{name:name,ownerid:543624},9979509360:{name:some name,ownerid:765875},9979524523:{name:some name,ownerid:2156554},9979524524:{name:some-other-name,ownerid:65893}; var json=[]; var resObj=JSON.parseresponse; resObj中的forvar键{ ifresObj[key].name=='some name'{ json.pushresObj[key]; } }
console.logjson;您的json数据包含两个相同的键,用于不同的值,这就是结果丢失一个项的原因。噢,哈哈,我没有看到,谢谢您指出这一点。在复制粘贴以创建测试代码时将其搞糟了。