Javascript jQuery中是否有类似array_unique()的函数?

Javascript jQuery中是否有类似array_unique()的函数?,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我有一个选择,可以从中获得一些数组值,如[“1”、“2”、“3”] 在每次更改时,我都运行以下代码以获得数组的结果,该数组连接到我从select获得的这些值 $('#event-courses-type').on('change',function(){ type = $('#event-courses-type').val(); console.log(type); var var1 = ["4689 Leadership Award", "UKCC Level

我有一个选择,可以从中获得一些数组值,如
[“1”、“2”、“3”]

在每次更改时,我都运行以下代码以获得数组的结果,该数组连接到我从select获得的这些值

$('#event-courses-type').on('change',function(){

    type = $('#event-courses-type').val();

    console.log(type);

    var var1 = ["4689 Leadership Award", "UKCC Level 1", "UKCC Level 2", "UKCC Level 3", "UKCC Level 4", "Old WHU Award", "None at present"];
    var var2 = ["4689 Leadership Award", "GB-wide Level 1", "Old Level 1 (Pre January 2012)", "Level 2", "Level 3", "EHF", "FIH", "None at present"];

    var var5 = ["D32/33", "A1 Assessor", "CTS", "IAPS", "PTLLS", "AVRA", "Umpire Educator Training", "Umpire Assessor Training"];
    var var6 = ["D32/33", "A1 Assessor", "CTS", "IAPS", "PTLLS", "AVRA", "Umpire Educator Training", "Umpire Assessor Training"];

    var results = [];

    if ($.inArray("1",type) != -1) {
        var results = $.merge(var1, results);
    }
    if ($.inArray("2",type) != -1) {
        var results = $.merge(var2, results);
    }
    if ($.inArray("5",type) != -1) {
        var results = $.merge(var5, results);
    }
    if ($.inArray("6",type) != -1) {
        var results = $.merge(var6, results);
    }

    console.log(results);
)};
这是我的控制台日志,让您在选择2个选项和结果数组后可以看到类型数组:

["1", "2"] ------------------- add_event.php:802

["4689 Leadership Award", "GB-wide Level 1", "Old Level 1 (Pre January 2012)", "Level 2", "Level 3", "EHF", "FIH", "None at present", "4689 Leadership Award", "UKCC Level 1", "UKCC Level 2", "UKCC Level 3", "UKCC Level 4", "Old WHU Award", "None at present"]
正如你们所看到的,有两次“4689领导力奖”,我不希望这种情况发生。在PHP中,我使用
array\u unique()
函数来消除这些重复的值,但我不知道如何在jQuery中做到这一点。

尝试以下方法:

function unique(array){
  return array.filter(function(el, index, arr) {
      return index == arr.indexOf(el);
  });
}
工作示例:
const startingArray=[1,2,2,3,2,3,3];
函数唯一(数组){
返回数组.过滤器(函数(el、索引、arr){
返回指数==arr.indexOf(el);
});
}
const uniqueArray=唯一(startingArray);

console.log(uniqueArray)jQuery没有一个方法可以做到这一点。但是,使用一个简单的for循环或几种数组方法之一当然可以做到这一点。我有一个问题,
type
是一个值,所以它显然是一个字符串,但您在
$中将它用作数组。inArray
,它是如何工作的?因为字符串也有indexOf方法。代码似乎没有意义,但它肯定会根据indexOf的结果做一些“事情”,这对于所选择的每种类型都是不同的。看起来好像根本不需要inArray ins,应该能够将字符串值与字符串进行比较。@KevinB-我测试了它,所以它知道它实际上可以作为jQuery调用
indexOf
,我只是想知道OP是否知道他为什么在字符串上使用
$。inArray
,这显然不是它的目的。回答很好。我喜欢它。我试图找到更多,但我对你的回答很满意。这是一个检查对象数组中唯一性的好技巧,在使用此函数之前,你可以将其转换为vetor:
const-genres=this.state.movies.map(movie=>movie.genre);const uniqueGenres=genres.filter((genre,index,arr)=>index==arr.indexOf(genre));回归独特风格
@RenanCoelho的答案是正确的,但可以用以下内容缩短:
this.state.movies.map(e=>e.genre.filter((e,i,a)=>i==a.indexOf(e))
是的,可以,但我更喜欢代码尽可能可读,而不是简短。注意,这个方法不会改变传递的数组,所以您应该像
array=unique(array)那样调用它