使用jquery或javascript从对象数组中查找特定对象的所有元素
我想要的是:基于'name'参数,我想要得到该特定对象中的所有内容。示例:当我传递name=spa时,我应该得到'id=2,name=spa'。使用上面的代码,我得到的结果是未定义的 我查了一下,但没多大帮助。请帮忙 编辑 对不起,朋友们,我真的很困惑。下面是代码,我可以在控制台中看到它来自服务器,所以我不知道它实际上是如何构造的使用jquery或javascript从对象数组中查找特定对象的所有元素,javascript,jquery,object,associative-array,Javascript,Jquery,Object,Associative Array,我想要的是:基于'name'参数,我想要得到该特定对象中的所有内容。示例:当我传递name=spa时,我应该得到'id=2,name=spa'。使用上面的代码,我得到的结果是未定义的 我查了一下,但没多大帮助。请帮忙 编辑 对不起,朋友们,我真的很困惑。下面是代码,我可以在控制台中看到它来自服务器,所以我不知道它实际上是如何构造的 courses = [{ code: 'English', otherFields: '1', list: [{id:'1'},{name:'eng'}]
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));
当我使用result.course.id时,我得到1。我想要的是根据西班牙语或英语的特定名称,在课程中获得全部内容。我希望我现在说清楚了
很抱歉给您带来不便。请提供帮助。您使用jQuery.grep的方法是正确的,但没有正确使用它 您可以做的是:
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
或者更一般地说:
$.grep(courses, function(e) { return e.list[1].name == 'spa'; })
它将返回与给定名称匹配的courses数组的所有元素。我已经为您编写了一个函数。您只需通过以下方式即可完成:-
function find(name) {
return $.grep(courses, function(e) { return e.list[1].name == name; });
}
请参见fiddle-所有元素的第一个含义是什么?你的意思是找到所有元素吗?FWIW,[{id:'2'},{name:'spa'}]是一个非常不寻常的数据结构。为什么一个具有不同键的对象数组,而不是一个具有所有这些键的单个对象?我已经更新了这个问题。你现在能查一下吗?我已经更新了问题。你现在能查一下吗
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);
}
}
}