Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery或javascript从对象数组中查找特定对象的所有元素_Javascript_Jquery_Object_Associative Array - Fatal编程技术网

使用jquery或javascript从对象数组中查找特定对象的所有元素

使用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'}]

我想要的是:基于'name'参数,我想要得到该特定对象中的所有内容。示例:当我传递name=spa时,我应该得到'id=2,name=spa'。使用上面的代码,我得到的结果是未定义的

我查了一下,但没多大帮助。请帮忙

编辑

对不起,朋友们,我真的很困惑。下面是代码,我可以在控制台中看到它来自服务器,所以我不知道它实际上是如何构造的

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);
            }
        }
    }