javascript - Javascript 中的 Math.Abs​​() - 数组意外

标签 javascript arrays typescript ecmascript-6

如果我在 Math.abs() 中传递数组,我无法理解为什么它返回 -3,为什么我的值从正变为负

let test1 = [2, 3, 3, 1, 5, 2]
let test2 = [2, 4, 3, 5, 1]
function firstDuplicate(a) {
  for (let i of a) {
    console.log(i);
    let posi = Math.abs(i) - 1;
    //console.log(posi);
  }

}
console.log(firstDuplicate(test1))
console.log(firstDuplicate(test2))

我不明白 Math.abs 是如何工作的,真正的代码如下

function firstDuplicate(a) {
  for (let i of a) {
    let posi = Math.abs(i) - 1
    if (a[posi] < 0) return posi + 1
    a[posi] = a[posi] * -1
  }

  return -1
}

最佳答案

Math.abs() 返回数字的绝对值。但是你将你的绝对值乘以负1。这就是为什么你得到负值

a[posi] = a[posi] * -1

关于javascript - Javascript 中的 Math.Abs​​() - 数组意外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47431266/

相关文章:

javascript - React 组件 Key 应该有多独特?

表单重置按钮需要 Javascript

javascript - 将 php 数组引入 javascript 出现意外结果

c - 使用宏获取结构体中的数组长度

node.js - 从 Angular2 应用程序链接到全局 Node 模块文件夹

javascript - 具有状态 (.active) 的元素的 getAttribute

javascript - 很难找到值的总和

Javascript 动态添加 cdata 部分?

javascript - 我需要在 ui-grid 中显示一个字符串数组。单列,每行一个字符串

Angular:订阅后仍然没有获得值