如何从我的multidimesional数组中删除负值?

时间:2016-10-16 11:39:55

标签: javascript arrays

我对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 ] ]

5 个答案:

答案 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)

出于学习目的,使用更多功能样式的另一种解决方案如下:

&#13;
&#13;
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;
&#13;
&#13;

JS中的

Arrays带有方便的功能,如reducemap。该函数将其他函数作为回调,以同步方式在数组的每个元素上执行。

您的问题可以解决并且#34;转变&#34; (或映射)你的数组到另一个数组,其中数组的每个元素(又是另一个数组)是&#34;映射&#34;到&#34;转换&#34;当它们为负数时,它的元素为零。

希望它有所帮助。

答案 3 :(得分:0)

您可以使用Array.prototype.map嵌套来迭代列表中的每个项目。 map将迭代一个数组,从返回的值中创建一个新数组。

在最后一次迭代中,我们检查x的值是否小于0,如果返回0,则返回该数字。

&#13;
&#13;
var result = [ [ -21, 0 ], [ 22, 0 ], [ -1, 0 ], [ -5, -18 ] ]

console.log(
  result.map(r => r.map(x => x < 0 ? 0 : x))
)
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您可以使用Math.max作为值并迭代外部和内部数组。

&#13;
&#13;
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;
&#13;
&#13;

ES6中的相同

&#13;
&#13;
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;
&#13;
&#13;