Javascript 从数组中获取最高但也是唯一的数字
我有个问题。我正在寻找一种方法来获得数组中最高的唯一数Javascript 从数组中获取最高但也是唯一的数字,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有个问题。我正在寻找一种方法来获得数组中最高的唯一数 var temp = [1, 8, 8, 8, 4, 2, 7, 7]; 现在我想得到输出4,因为这是唯一的最高数字 有没有一个好的且希望很短的方法可以做到这一点?是的,有: Math.max(...temp.filter(el => temp.indexOf(el) == temp.lastIndexOf(el))) 说明: 首先,使用 现在,使用ES6从数组中获取最大值 此代码相当于 Math.max.apply(Math,
var temp = [1, 8, 8, 8, 4, 2, 7, 7];
现在我想得到输出4,因为这是唯一的最高数字
有没有一个好的且希望很短的方法可以做到这一点?是的,有:
Math.max(...temp.filter(el => temp.indexOf(el) == temp.lastIndexOf(el)))
说明:
Math.max.apply(Math, array);
Math.max(...temp.filter(el => temp.indexOf(el) == temp.lastIndexOf(el)))
说明:
Math.max.apply(Math, array);
使用spread运算符,您可以很容易地找到最高值
Math.max(...numArray);
剩下的唯一一件事就是预先从数组中筛选重复项,或者删除与最大数量匹配的所有元素(如果是重复项)
在这样的es6中,预先删除是最容易的
Math.max(...numArray.filter(function(value){ return numArray.indexOf(value) === numArray.lastIndexOf(numArray);}));
对于非es6兼容的删除重复项的方法,请看一看,第二个答案包含对多个备选方案的广泛检查使用扩展运算符,您可以轻松找到最高值
Math.max(...numArray);
剩下的唯一一件事就是预先从数组中筛选重复项,或者删除与最大数量匹配的所有元素(如果是重复项)
在这样的es6中,预先删除是最容易的
Math.max(...numArray.filter(function(value){ return numArray.indexOf(value) === numArray.lastIndexOf(numArray);}));
对于不兼容es6的删除重复项的方法,请看一看,第二个答案包含对多个备选方案的广泛检查如果您不想太花哨,可以使用排序和循环来检查最少数量的项:
var max = 0;
var reject = 0;
// sort the array in ascending order
temp.sort(function(a,b){return a-b});
for (var i = temp.length - 1; i > 0; i--) {
// find the largest one without a duplicate by iterating backwards
if (temp[i-1] == temp[i] || temp[i] == reject){
reject = temp[i];
console.log(reject+" ");
}
else {
max = temp[i];
break;
}
}
如果您不想太花哨,可以使用排序和循环来检查最少数量的项目:
var max = 0;
var reject = 0;
// sort the array in ascending order
temp.sort(function(a,b){return a-b});
for (var i = temp.length - 1; i > 0; i--) {
// find the largest one without a duplicate by iterating backwards
if (temp[i-1] == temp[i] || temp[i] == reject){
reject = temp[i];
console.log(reject+" ");
}
else {
max = temp[i];
break;
}
}
我认为箭头函数在浏览器中还没有广泛的支持@尼克特:可能不仅仅是散布争论……但没关系,OP把他的问题标在了ES6上,所以我用了它。我弄乱了什么吗。因为我得到了楠。。。。我做了-->console.log(Math.max(temp.filter(el=>temp.indexOf(el)==temp.lastIndexOf(el))@罗曼诺:你错过了
…
。看,我认为箭头函数在浏览器中还没有广泛的支持@尼克特:可能不仅仅是散布争论……但没关系,OP把他的问题标在了ES6上,所以我用了它。我弄乱了什么吗。因为我得到了楠。。。。我做了-->console.log(Math.max(temp.filter(el=>temp.indexOf(el)==temp.lastIndexOf(el))@罗曼诺:你错过了…
。请参见Set
实际上并不删除所有非唯一的元素,它只删除它们的重复项,以便每个元素中有一个保留在集合中。我认为OP期望的结果是4,而不是8。Set
实际上并没有删除所有非唯一的元素,它只是删除它们的重复项,以便每个元素中有一个保留在集合中。我认为OP期望的结果是4,而不是8。