如何解决在所有数组项上使用数学 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 举报,一经查实,本站将立刻删除。