Find all elements of particular object from object array using jquery or javascript

天涯浪子 提交于 2019-12-12 04:09:24

问题


courses = [{
  code: 'English',
  otherFields: '1',
  list: [{id:'1'},{name:'eng'}]
}, {
  code: 'Spanish',
  otherFields: '2',
  list: [{id:'2'},{name:'spa'}]
}, {
  code: 'German',
  otherFields: '3',
  list: [{id:'3'},{name:'ger'}]
}]

 var resultSet = $.grep(courses.list, function (e) {
 return e.code.indexOf('German') == 0;
});

console.log(JSON.stringify(resultSet));

What I want is: based on 'name' parameter I want to get everything in that particular object. Example: when I pass name=spa I should get ' id=2, name=spa'. Using the above code I get the result as undefined.

I check this question but it didn't help much. Please help.

EDIT

Sorry friends but I'm really confused. Below is the code while I can see in console (Its coming from server so I don't know how it is actually structured).

result : {Object}
 course : {Object}
  name : English
  list : {Object}
   1 : {Object}
     attr1 : value1
     attr2 : value2
   3 : {Object}
     attr1 : value1
     attr2 : value2
  other : value-other
  id : 1
 course : {Object}
  name : Spanish
  list : {Object}
   1 : {Object}
     attr1 : value1
     attr2 : value2
   3 : {Object}
     attr1 : value1
     attr2 : value2
  other : value-other
  id : 2  

When I'm using result.course.id I'm getting 1. What I want is to get the entire thing inside course based on particular name (Spanish or English). I hop I made myself clear now.

Sorry for the inconvenience that you'd to face before. Please help.


回答1:


You were on the right track with jQuery.grep() but did not use it correctly.

What you can do is:

$.grep(courses, function(e) { return e.list[1].name == 'spa'; })

Or more generally:

function find(name) {
    return $.grep(courses, function(e) { return e.list[1].name == name; });
}

And it will return all the elements of the courses array that match the given name.




回答2:


I have written a function for you. You can do it simply by:-

function FindCourse(code) {
        for (var i = 0; i < courses.length; i++) {

            if (courses[i].list[1].name === code) {
                alert(courses[i].code);
                alert(courses[i].otherFields);
                alert(courses[i].list[0].id);
                alert(courses[i].list[1].name);
            }
        }
    }

See fiddle-http://jsfiddle.net/rMECV/4/



来源:https://stackoverflow.com/questions/22575092/find-all-elements-of-particular-object-from-object-array-using-jquery-or-javascr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!