【问题标题】:For in statement [duplicate]For in 声明 [重复]
【发布时间】:2021-09-21 12:09:37
【问题描述】:

我正在练习 for-in 语句。

我想将所有大于 5 的数字放入一个新数组中并将它们打印到控制台。

let numbers = [1, 2, 3, 4, 5, 6, 7, 8];

let result=[];

for (var number in numbers){
    result.push (number => number > 5)
    console.log(result);
}

【问题讨论】:

  • 不要将for...in... 用于数组。这仅用于迭代对象的属性。
  • 那我会用什么
  • .push() 将参数添加到调用它的数组中。您希望.push(number => number > 5) 会发生什么?整个构造应该只是一个.filter() 调用。
  • 一个常规的 for 循环,.forEach().filter().reduce()while,... - 满足您的需求(在这种情况下是 .filter() )
  • 警告:for( ... in ... ) 为您提供元素的 index。你不会得到1, 2, 3, 4,而是0, 1, 2, 3(你的数组中数字1的索引是0)。如果您想要元素本身,请使用for( ... of ...)

标签: javascript arrays object


【解决方案1】:

建议不要在数组中使用for..in

for...in 语句遍历对象的所有以字符串为键的可枚举属性(忽略以符号为键的那些),包括继承的可枚举属性。 -MDN

您可以将for..of 与数组一起使用。因为数组是可迭代的对象。

let numbers = [1, 2, 3, 4, 5, 6, 7, 8];

let result = [];

for (let num of numbers) {
  if (num > 5) result.push(num);
}

console.log(result);

或者,您可以使用filter 来获取大于 5 的数字

let numbers = [1, 2, 3, 4, 5, 6, 7, 8];

let result = numbers.filter((num) => num > 5);

console.log(result);

【讨论】:

  • 这真的值得回答吗,因为在 SO 上还没有另一个与相同主题的问题?
猜你喜欢
  • 2012-10-24
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 2021-08-29
  • 2011-02-26
  • 1970-01-01
相关资源
最近更新 更多