jQuery'unique'没有在Safari中返回实际的唯一值

时间:2016-07-20 02:38:42

标签: javascript jquery arrays json unique

我已经看过类似的帖子,但我无法用其他帖子的答案解决我的问题。我有以下函数从大数组中返回唯一值:

self.availableActivies = ko.computed(function () {
   var activities = [];
   $.each(self.data(), function(i, s){
      activities.push(s.activities);
   });
   return $.unique(activities);
});

当我将s.activities推送到'activities'数组时,我有一个包含大约30个重复活动的数组,但只有4个独特的活动。

最后一个jQuery行返回我在chrome中需要的内容,但是如果没有jQuery,我无法弄清楚如何在所有浏览器中运行它。

1 个答案:

答案 0 :(得分:1)

$.unique有效with DOM

enter image description here 然而,似乎activities是另一种类型的数组。

  • 因此,请尝试$.unique(activities.sort());

  • 无论如何,我们建议改为使用$.inArray&对于$.grep

    等数组,activites
      function customUnique(array) {
         return $.grep(array, function(el, index) {
            return index === $.inArray(el, array);
          });
       }
    

    然后:

     self.availableActivies = ko.computed(function () {
        var activities = [];
        $.each(self.data(), function(i, s){
            activities.push(s.activities);
        });
        return customUnique(activities);
      });