如何遍历数组并打印出正值?

时间:2020-07-15 16:47:14

标签: javascript arrays

我当前的代码循环遍历该数组,创建一个新的并返回所有大于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;
}

4 个答案:

答案 0 :(得分:3)

一个简单的例子可以做到:

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

nums.map(element => {

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

})

答案 1 :(得分:0)

如果您要做的只是迭代一个数组并打印符合您条件的值,而无需将这些结果与起始值分开,请使用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);

答案 2 :(得分:0)

在此示例中创建新阵列不会影响性能, 如果您希望代码避免使用新的数组并更改原始数组,则可以简单地拼接每个小于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)

答案 3 :(得分:0)

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

nums.filter(num => num > 0).forEach(num => console.log(num));