为了账号安全,请及时绑定邮箱和手机立即绑定

脚本:当元素存在于数组中时,为什么索引函数返回 -1?

脚本:当元素存在于数组中时,为什么索引函数返回 -1?

慕盖茨4494581 2022-09-23 21:28:53

我创建了一个矩阵,如下所示:


u = Array.from({ length: 100}, (v, i) => []); 
console.log(u)


然后,在运行代码并填充矩阵之后。我想特别获得最小元素的索引,row.so 结果应该是0或1。

act[i] = u.indexOf(Math.min.apply(null,u[i]));

但是,我有时会得到-1。我读到负数意味着元素在数组中不存在。就我而言,它始终存在。

检查它是否存在,我使用过它确实始终存在,但由于某种原因,它仍然返回-1作为索引。console.log()


查看完整描述

1 回答

?
慕勒3428872

TA贡献1541条经验 获得超4个赞

你可以这样做:


循环遍历您的Matrix,通过将该行传递到函数中来找到该行的最小值 - 使用扩展语法(将数组项“解包”到函数参数中)。将此最小值放入数组中,或者将此最小值的索引放入数组中(或者您可以同时执行这两项操作)。Math.min()const min_val = Math.min(...u[row]);actact[row] = min_val;act[row] = u[row].indexOf(min_val);


如果您不需要所有最小值/索引(只需要按需给定的行),则可以使用底部的函数。


const ROWS = 100;

const COLS = 5;


const u = Array.from({ length: ROWS}, (v, i) => []);


//let's fill the Matrix:

for (let row = 0; row < u.length; row++){

  for (let col = 0; col < COLS; col++){

    u[row].push(Math.random());

  }  

}


console.log(u)


//Create an array of all min values/indexes:

const act = Array(u.length);


for (let row = 0; row < u.length; row++){

  const min_val = Math.min(...u[row]);

  //put min value in:

  //act[row] = min_val;

  

  //or put min value index in:

  act[row] = u[row].indexOf(min_val);

  

  //or you could do both:

  //act[row] = [ min_val, u[row].indexOf(min_val) ];

}


console.log(act)


//if you just want to get any min index of any row on the fly use this function:

function getMinIndexAtRow(inputArr, row){

  const min_val = Math.min(...inputArr[row]);

  return u[row].indexOf(min_val);

}


//use it like this:

console.log(getMinIndexAtRow(u, 0));


查看完整回答
反对 回复 2022-09-23
  • 1 回答
  • 0 关注
  • 9 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信