在javascript中查找数组中多个最小值的索引
我想找到数组最小值的索引 例如 问题是Math.min.apply只返回第一个索引 最小值=1,关键值=0 我想做的就是回来在javascript中查找数组中多个最小值的索引,javascript,arrays,minimum,Javascript,Arrays,Minimum,我想找到数组最小值的索引 例如 问题是Math.min.apply只返回第一个索引 最小值=1,关键值=0 我想做的就是回来 min = 1 and key = [0,4,8]; 可以用Math.min.apply来做吗 var array = [1,2,3,4,1,7,8,9,1]; function findMinimumIndexes(array) { var min = Math.min.apply(Math, array); var indexes = [];
min = 1 and key = [0,4,8];
可以用Math.min.apply来做吗
var array = [1,2,3,4,1,7,8,9,1];
function findMinimumIndexes(array) {
var min = Math.min.apply(Math, array);
var indexes = [];
array.forEach(function(item, idx, arr) {
if (item === min) {
indexes.push(idx);
}
});
return indexes;
}
console.log(findMinimumIndexes(array));
函数声明变量索引并为其分配一个空数组,然后使用forEach调用填充值与min匹配的元素索引
请注意,这只适用于基本值,因为它使用===检查等价性。
要使其在与您正在寻找的阵列或对象“完全相同”的阵列或对象上工作,您需要更严格的实现
var array = [1,2,3,4,1,7,8,9,1];
var min = Math.min.apply( Math, array )
var arrayWithIndex = array.map(function(element, index) {
return element + "-" + index;
});
var minValues = arrayWithIndex.filter(function(element) {
return Number(element.split('-')[0]) === min;
});
var keys = minValues.map(function(element) {
return Number(element.split('-')[1]);
});
我的算法是将原始数组映射为包含一个新数组,该数组同时包含数字和索引。然后,我将过滤该数组中的元素,其中的数字等于min,然后再次映射以查找索引
您还可以链接这些方法
return array.map(function(element, index) {
return element + "-" + index;
})
.filter(function(element) {
return Number(element.split('-')[0]) === min;
}).
.filter(function(element) {
return Number(element.split('-')[1]);
});
Array.prototype.reduce应该完成这项工作
var数组=[1,2,3,4,1,7,8,9,1];
函数getMinKeysarray{
var min=Math.min.applyMath,数组;
return array.reducefunction r,a,i{
a==min&r.pushi;
返回r;
}, [];
}
文件。书写;为什么a==min&&r.pushi;?它是否带来了性能改进?与什么相比?写a===min&&r.pushi;如果a==最小r.pushi。
return array.map(function(element, index) {
return element + "-" + index;
})
.filter(function(element) {
return Number(element.split('-')[0]) === min;
}).
.filter(function(element) {
return Number(element.split('-')[1]);
});