【发布时间】:2014-05-01 10:06:50
【问题描述】:
我已经发布了question here,但没有得到任何适合我的答案(可能是我的问题不够清楚)。所以我再次在这里发布我想要的内容。
下面是我在控制台中看到的代码(它来自服务器,所以我不知道它的实际结构)。
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
基于此,我认为结构将是:
results = {
other: 'something',
id: '1',
courses: {list:{...},name:'English'}
}, {
other: 'again-something',
id: '2',
courses: {list:{...},name:'Spanish'}
}, {
other: 'again-something',
id: '3',
courses: {list:{...},name:'German'}
};
我想要的是:获取result.course其中result.course.name = 'Spanish'的所有元素
我尝试了下面的代码,但它返回一个空数组:
var test = $.grep(result, function(e) { return e.courses.name == 'Spanish'; });
console.log(JSON.stringify(test));
我猜问题是result 本身是一个对象而不是一个数组。如果是result = [{...}];,那么代码会以某种方式工作。
当result 本身是object 时,谁能告诉我如何解决这个问题。
谢谢。
【问题讨论】:
-
您在看哪个控制台?您应该添加屏幕截图或 JSBin 示例。您的上述数据令人困惑,因为不清楚结果中是否有一个包含所有课程的数组。如果您使用的是 Chrome,那么您应该能够扩展关卡并添加您看到的屏幕截图。
-
@ShitalShah 我得到这些是因为 'console.log()' 的结果,这也是从服务器端完成的(某种 rpc 调用)。不幸的是,我无法创建小提琴。不,
result中没有数组,result本身就是一个对象。 -
嗯...您的 javascript-object “结果”的结构肯定是错误的..如果您可以提供正确的 json-object,您肯定会得到帮助
标签: jquery object associative-array