-1

我有一个看起来有点像这样的 json 响应

[{"name":"Dude",       "id":"1",     "Category": "One"},
 {"name":"Guy,         "id":"12",    "Category": "One"},
 {"name":"Thomas"      "id":"12",    "Category": "Two"},
 {"name":"Richard",    "id":"2",     "Category": "One"},
 {"name":"Harold",     "id":"3",     "Category": "One"},
 {"name":"Pete",       "id":"4",     "Category": "Two"}]

我希望能够遍历这个对象,并为所有不同种类的类别制作一个整齐的数组,例如,

["One", "Two"]

如果我要遍历这个。我试图创建一个 for/if 循环,如果它已经被提及,它将忽略一个类别,但收效甚微。有更好的方法吗?

4

1 回答 1

5

假设您已将 JSON 响应反序列化为包含您显示的对象的数组(我们称之为yourArrayOfObjects),循环并构建数组很简单:

var categories = [];
$.each(yourArrayOfObjects, function(index, entry) {
    if ($.inArray(entry.Category, categories) === -1) {
        categories.push(entry.Category);
    }
});

这用于$.each循环遍历数组,并$.inArray检查我们是否已经看到了一个类别。

您也可以在不使用 jQuery 的情况下使用Array#forEach(ES5 添加,出现在所有现代浏览器上,但显然缺少一些旧浏览器)和Array#indexOf(从 IE7 向下丢失),这两者都可能由您可能处理的任何“ES5 shim”处理想查找和使用。

于 2013-03-14T07:52:24.100 回答