Jquery 过滤JSON响应

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

我收到一个xhr的回复,如下所示:

{
    "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数据包含两个相同的键,用于不同的值,这就是结果丢失一个项的原因。噢,哈哈,我没有看到,谢谢您指出这一点。在复制粘贴以创建测试代码时将其搞糟了。