我对javascript很新,我有点困惑,如何将我的负值变为0
var result = [ [ -21, 0 ], [ 22, 0 ], [ -1, 0 ], [ -5, -18 ] ]
console.log(result)//[ [ -21, 0 ], [ -22, 0 ], [ -1, 0 ], [ -5, -18 ] ]
我希望我的输出像这样
[ [ 0, 0 ], [ 22, 0 ], [ 0, 0 ], [ 0, 0 ] ]
答案 0 :(得分:1)
var result = [ [ -21, 0 ], [ 22, 0 ], [ -1, 0 ], [ -5, -18 ] ]
for (var i=0;i < result.length;i++) {
for (var k=0;k < result[i].length;k++) {
if (result[i][k] < 0) {
result[i][k] = 0
}
}
}
console.log(result);
答案 1 :(得分:0)
ArtemKh的答案应该有效。 但只是为了补充一点,使用first for循环,您将遍历您调用的数组的每个元素&#34; result&#34;,然后使用second,您将遍历子数组的每个元素。如果您要检查数字是否为负数,如果是,则将其值设置为0.
答案 2 :(得分:0)
出于学习目的,使用更多功能样式的另一种解决方案如下:
var arr = [
[-21, 0],
[22, 0],
[-1, 0],
[-5, -18]
],
result = arr.map(subArr => subArr.map(el => el < 0 ? 0 : el) );
console.log(result);
&#13;
JS中的
Arrays带有方便的功能,如reduce或map。该函数将其他函数作为回调,以同步方式在数组的每个元素上执行。
您的问题可以解决并且#34;转变&#34; (或映射)你的数组到另一个数组,其中数组的每个元素(又是另一个数组)是&#34;映射&#34;到&#34;转换&#34;当它们为负数时,它的元素为零。
希望它有所帮助。
答案 3 :(得分:0)
您可以使用Array.prototype.map
嵌套来迭代列表中的每个项目。 map
将迭代一个数组,从返回的值中创建一个新数组。
在最后一次迭代中,我们检查x的值是否小于0,如果返回0,则返回该数字。
var result = [ [ -21, 0 ], [ 22, 0 ], [ -1, 0 ], [ -5, -18 ] ]
console.log(
result.map(r => r.map(x => x < 0 ? 0 : x))
)
&#13;
答案 4 :(得分:0)
您可以使用Math.max作为值并迭代外部和内部数组。
var array = [[-21, 0], [22, 0], [-1, 0], [-5, -18]],
result = array.map(function (a) {
return a.map(function (b) {
return Math.max(b, 0);
});
});
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
ES6中的相同
var array = [[-21, 0], [22, 0], [-1, 0], [-5, -18]],
result = array.map(a => a.map(b => Math.max(b, 0)));
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;