繁体   English   中英

通过jQuery中的特定值从对象中获取对象

[英]Get object from object by specific value in jQuery

我有一个这样的对象。

var obj = 
{
    0:{submissionID: "136169", date: "2018-02-17 14:40:00", compId: "j1hrxej5", browser: "Chrome", formName: "Name1"}
    1:{submissionID: "6113", date: "2018-02-17 12:55:13", compId: "j1hrxej5", browser: "Mozila", formName: "Name2"}
    2:{submissionID: "500", date: "2018-02-16 18:45:58", compId: "jhg2l9lj", browser: "Opera", formName: "Name3"}
    3:{submissionID: "306", date: "2018-02-16 18:43:45", compId: "j372155lj", browser: "Chrome", formName: "Name4"}
    4:{submissionID: "50150", date: "2018-02-16 18:41:36", compId: "j37189lj", browser: "Opera", formName: "Name5"}
};

我可以通过它的 submitID 取一个对象吗? 像 SQL。 首先我创建了这样的对象。

var obj = 
{
    136169:{submissionID: "136169", date: "2018-02-17 14:40:00", compId: "j1hrxej5", browser: "Chrome", formName: "Name1"}
    6113:{submissionID: "6113", date: "2018-02-17 12:55:13", compId: "j1hrxej5", browser: "Mozila", formName: "Name2"}
    500:{submissionID: "500", date: "2018-02-16 18:45:58", compId: "jhg2l9lj", browser: "Opera", formName: "Name3"}
    306:{submissionID: "306", date: "2018-02-16 18:43:45", compId: "j372155lj", browser: "Chrome", formName: "Name4"}
    50150:{submissionID: "50150", date: "2018-02-16 18:41:36", compId: "j37189lj", browser: "Opera", formName: "Name5"}
}; 

并获得 obj[submissionID],但我现在必须修复我的代码

使用Object.valuesfind

var idToFind = "500";
var output = Object.values( obj ).find( s => s.id == idToFind );

您可以使用数组而不是对象,如下所示:

var obj = 
[
    {submissionID: "136169", date: "2018-02-17 14:40:00", compId: "j1hrxej5", browser: "Chrome", formName: "Name1"}
    {submissionID: "6113", date: "2018-02-17 12:55:13", compId: "j1hrxej5", browser: "Mozila", formName: "Name2"}
    {submissionID: "500", date: "2018-02-16 18:45:58", compId: "jhg2l9lj", browser: "Opera", formName: "Name3"}
    {submissionID: "306", date: "2018-02-16 18:43:45", compId: "j372155lj", browser: "Chrome", formName: "Name4"}
    {submissionID: "500", date: "2018-02-16 18:41:36", compId: "j37189lj", browser: "Opera", formName: "Name5"}
];

然后,创建一个过滤器函数:

var specificID = "500";
val filteredArray = array.filter(function(element) {
    return (element.submissionID === specificID)
};
// filteredArray[0] is the object that you are looking for

可以在此处找到有关过滤器方法的更多详细信息

对于您的回应,请尝试以下方法:

var obj = 
{
    0:{submissionID: "136169", date: "2018-02-17 14:40:00", compId: "j1hrxej5", browser: "Chrome", formName: "Name1"},
    1:{submissionID: "6113", date: "2018-02-17 12:55:13", compId: "j1hrxej5", browser: "Mozila", formName: "Name2"},
    2:{submissionID: "500", date: "2018-02-16 18:45:58", compId: "jhg2l9lj", browser: "Opera", formName: "Name3"},
    3:{submissionID: "306", date: "2018-02-16 18:43:45", compId: "j372155lj", browser: "Chrome", formName: "Name4"},
    4:{submissionID: "50150", date: "2018-02-16 18:41:36", compId: "j37189lj", browser: "Opera", formName: "Name5"}
};

如果这是响应,则使用以下方法获取所需的答案:

for (var i = Object.keys(obj).length - 1; i >= 0; i--) {
     if (obj[i].submissionID==="500") {
        var obj2 = obj[i];
        console.log(obj2);
        }
}

您可以使用Object.keysArray.reduce的组合Array.reduce获取映射。 注意:事实证明,您声明对象的语法不正确,因为它缺少逗号。

var x = {
    0:{submissionID: "136169", date: "2018-02-17 14:40:00", compId: "j1hrxej5", browser: "Chrome", formName: "Name1"},
    1:{submissionID: "6113", date: "2018-02-17 12:55:13", compId: "j1hrxej5", browser: "Mozila", formName: "Name2"},
    2:{submissionID: "500", date: "2018-02-16 18:45:58", compId: "jhg2l9lj", browser: "Opera", formName: "Name3"},
    3:{submissionID: "306", date: "2018-02-16 18:43:45", compId: "j372155lj", browser: "Chrome", formName: "Name4"},
    4:{submissionID: "50150", date: "2018-02-16 18:41:36", compId: "j37189lj", browser: "Opera", formName: "Name5"}
}


function remap(obj){
    return Object.keys(obj).reduce(function(m, key){
        let item = obj[key];
        m[item.submissionID] = item;
        return m;
    }, {});
}

var newMap = remap(x); //"{"306":{"submissionID":"306","date":"2018-02-16 18:43:45","compId":"j372155lj","browser":"Chrome","formName":"Name4"},"500":{"submissionID":"500","date":"2018-02-16 18:45:58","compId":"jhg2l9lj","browser":"Opera","formName":"Name3"},"6113":{"submissionID":"6113","date":"2018-02-17 12:55:13","compId":"j1hrxej5","browser":"Mozila","formName":"Name2"},"50150":{"submissionID":"50150","date":"2018-02-16 18:41:36","compId":"j37189lj","browser":"Opera","formName":"Name5"},"136169":{"submissionID":"136169","date":"2018-02-17 14:40:00","compId":"j1hrxej5","browser":"Chrome","formName":"Name1"}}"

newMap["50150"]; //"{"submissionID":"50150","date":"2018-02-16 18:41:36","compId":"j37189lj","browser":"Opera","formName":"Name5"}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM