微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在所有数组项上使用数学 abc

如何解决在所有数组项上使用数学 abc

数组 => math.abc


我的数组是:

.catch(err => {

我想使用 math.abc 在新数组中获得 9,2,10,2 21 。 我怎样才能做到这一点 ? :p


这是我的代码

var arr = [9,-2,-10,-21]

但我不知道为什么它不起作用:(

为什么很难发送问题? :\

解决方法

Math.abs,不是math.abc

通过 Math.abs 映射数组并记录它。

var arr = [9,-2,-10,2,-21];
console.log(
  arr.map(Math.abs)
);

原语是不可变的。仅对值调用 Math.abs 不会对该值产生任何影响 - 您需要将结果分配给某些内容才能看到更改。

您的 for 循环条件也是错误的,您从未定义过 n,并且在循环运行时条件应该为真:i < inputs.length,而不是 i === n

,

首先,您不需要在单独的变量中指定数组长度。更灵活的方式是使用inputs.length

其次,您的 for 循环中的条件是错误的 - 应该是 i < n

第三,只调用 Math.abs,什么都不做。如果你想改变你的原始数组,那么你可以更新你的代码如下:

var inputs = [1,-8,4,5];
for (var i = 0; i < inputs.length ; i++){
  inputs[i] = Math.abs(inputs[i]);
}
console.log(inputs);

如果你想用绝对数创建一个新数组,使用Array.prototype.map,像这样:

var inputs = [1,5];
var absoluteValues = inputs.map(Math.abs);
console.log(absoluteValues);

如果你不是很清楚,你可以使用更多的描述性代码:

var absoluteValues = inputs.map(function(number) {
    return Math.abs(number);
});
,

实际上您进展顺利,但您应该在代码中关注两点。

首先你有一个循环来获取数组中的所有值。 所以你应该从 i=0 开始并在索引 n-1 处获取最后一个值。

For 循环有 3 个部分。首先是迭代值的定义,第二个是条件,第三个是您想要在循环中每一步结束时执行的操作。它们以“;”分隔。在您的条件部分,您只是说 继续前进,而我的 i 值等于 n(数组的长度)

for(i=0;i===n;i++)

但你不应该那样做。因为如果只有你的 i 等于 n 它会起作用,所以会在第一次迭代时传递它,因为 i=0 和 n = 5 所以不相等。

您想要获取所有值,因此您想要获得 0 到 n-1 索引处的值,因此,如果您的 i 小于 n 继续,但您将获得所有值并且您的 i 等于或大于N 然后停止。

所以

for(i=0;i<n;i++)

第二点是,你不会改变 Math.abs 的值,你只是打印它。您应该将 Math.abs 值分配给旧值索引。所以

inputs[i] = Math.abs(inputs[i])

最后

var n = 5;
var inputs = [1,5];
for (var i = 0 ; i < n ; i++){
   inputs[i]=Math.abs(inputs[i]);      
}
console.log(inputs)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。