【问题标题】:How do I loop through an array and print out the positive values?如何循环遍历数组并打印出正值?
【发布时间】:2020-07-15 16:47:14
【问题描述】:

我当前的代码循环遍历数组,创建一个新数组并返回所有大于 0 的值,但是我如何使它更高效,以便在不创建新数组的情况下将它们打印出来?

    let nums = [190, -4, -8, 2130, 87, 123, -5];
function printPositives(array) {
  let pos = [];
  for (var i = 0; i < array.length; i++) {
    if (array[i] > 0) {
      pos.push(array[i]);
    }
  }
  return pos;
}

【问题讨论】:

  • 你是什么意思更高效更少代码或更快?
  • 您只是在制作一个新数组。 JavaScript 非常擅长制作对象。
  • let nums = [190, -4, -8, 2130, 87, 123, -5]; nums.filter(num =&gt; num&gt;0);

标签: javascript arrays


【解决方案1】:

一个简单的可以这样做:

let nums = [190, -4, -8, 2130, 87, 123, -5];

nums.map(element => {

if (element > 0) console.log(element); 

})

【讨论】:

  • 如果.map()返回的新数组不被使用,不如使用.forEach()
【解决方案2】:

如果您只想迭代一个数组并打印符合条件的值,而无需将这些结果与起始值分开,请使用Array.forEach(),它不会改变数组或创建新数组。

let nums = [190, -4, -8, 2130, 87, 123, -5];

function printPositives(array) {
  array.forEach(function(item){
    if(item > -1){
        console.log(item);
    }
  });
}

printPositives(nums);

【讨论】:

    【解决方案3】:

    在这个例子中创建一个新数组不会影响性能, 如果您希望您的代码避免使用新数组并改变原始数组,您可以简单地拼接每个小于 0

    的数字

    let nums = [190, -4, -8, 2130, 87, 123, -5];
    function printPositives(array) {
      for (var i = 0; i < array.length; i++) {
        if (array[i] < 0) {
          array.splice(i,1)
          i--
        }
      }
      return array
    }
    console.log(printPositives(nums))

    但是,如果您的建议代码较少,您可以改用 filter

    let nums = [190, -4, -8, 2130, 87, 123, -5];
    result=nums.filter(n=>n>0)
    console.log(result)

    【讨论】:

      【解决方案4】:

      let nums = [190, -4, -8, 2130, 87, 123, -5];
      
      nums.filter(num => num > 0).forEach(num => console.log(num));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多