我有一个看起来有点像这样的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循环,如果已经提到过,它将忽略一个类别,但收效甚微。有更好的方法吗?
答案 0 :(得分: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垫片处理#34;你可能想找到并使用它。