如何将所有可能的条目列入数组而不重复? [JavaScript的/ jquery的]

时间:2013-03-14 07:49:04

标签: javascript jquery json

我有一个看起来有点像这样的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循环,如果已经提到过,它将忽略一个类别,但收效甚微。有更好的方法吗?

1 个答案:

答案 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;你可能想找到并使用它。