Javascript 如何获取数组中5个最小值的索引?
我试图得到数组中5个最小值的索引 我尝试了下面的代码,但是它给出了错误:Math.min.apply(…).indexOf不是函数。我只是不确定我可以用什么作为替代Javascript 如何获取数组中5个最小值的索引?,javascript,arrays,Javascript,Arrays,我试图得到数组中5个最小值的索引 我尝试了下面的代码,但是它给出了错误:Math.min.apply(…).indexOf不是函数。我只是不确定我可以用什么作为替代 var smallest = []; for (var i = 0, length = distances.length; i < length; i++) { var min = Math.min.apply(null,distances).indexOf(); if (smallest.length <
var smallest = [];
for (var i = 0, length = distances.length; i < length; i++) {
var min = Math.min.apply(null,distances).indexOf();
if (smallest.length <= 5) {
smallest.push(min);
}
console.log(smallest);
}
var=[];
对于(变量i=0,长度=距离.length;i 如果(minimen.length可以为每个元素添加索引,则按升序对数据进行排序,然后拼接前5个值:
const data=[1,4,8,3,3,5,9,0,4,2]
常量索引=data.map((e,i)=>[e,i])
.sort()
.拼接(0,5)
.map(([,el])=>el)
console.log(index)
您可以为每个元素添加索引,按升序对数据排序,然后拼接前5个值:
const data=[1,4,8,3,3,5,9,0,4,2]
常量索引=data.map((e,i)=>[e,i])
.sort()
.拼接(0,5)
.map(([,el])=>el)
log(index)
您可以获取键,用值对它们进行排序,然后取前五名
var indices = [...distances.keys()]
.sort((a, b) => distances[a] - distances[b])
.slice(0, 5);
您可以获取键,按值对它们进行排序,然后取前五名
var indices = [...distances.keys()]
.sort((a, b) => distances[a] - distances[b])
.slice(0, 5);
您可以使用Object.entries()
获取[索引,值]
对,现在您可以按值排序以获取顺序
const distance=[1,4,8,3,3,5,9,0,4,2];
常量索引=对象条目(距离)
.sort(([,a],,b])=>a-b)
.map(([index])=>+索引)
.切片(0,5)
console.log(index);
您可以使用Object.entries()
获得[index,value]
对,现在您可以按值排序以获得顺序
const distance=[1,4,8,3,3,5,9,0,4,2];
常量索引=对象条目(距离)
.sort(([,a],,b])=>a-b)
.map(([index])=>+索引)
.切片(0,5)
console.log(index);
这个表达式没有意义;Math.min()
返回单个数值。Object.entries(distance).sort([i,a],[j,b])=>a-b.map([index])=>index.slice(0,5)
如果相同(小)怎么办值在数组中存在两次?您想要哪个索引?这个表达式没有意义;Math.min()
返回一个数值。Object.entries(distance)。sort(([i,a],[j,b])=>a-b)。map([index])=>index)。slice(0,5)
如果相同(小)怎么办值在数组中存在两次?您想要哪个索引?这将如何返回索引?啊,是的,我现在修复它@charlietfl@T.J.Crowder哈哈,是的,在这里写答案的时候,我总是因为没有用严格的方式写而成为牺牲品。data.slice().map(…)
是没有意义的。map
已经创建了一个新数组,您不再需要slice()
了。:)这将如何返回索引?啊,是的,我现在就解决这个问题@charlietfl@T.J.Crowder哈哈,是的,在这里写答案的时候,我总是因为没有用严格的方式写而成为牺牲品。data.slice().map(…)是没有意义的。map
已经创建了一个新数组,你不再需要slice()
。keys
返回一个迭代器。@charlietfl看一看keys
返回一个迭代器。@charlietfl看一看,这里不需要声明i
或j
,你只需要写[,a]
和[,b]
:)@Kobe thx,不确定。并且不想对这些未使用的参数使用\u
和\u
。是的,解构有时会变得奇怪:p这里不需要声明i
或j
,您只需编写[,a]/code>和[,b]
:)@Kobe-thx,不确定。不想对这些未使用的参数使用\uu
和\u
。是的,解构有时会变得很奇怪:P