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