在 JavaScript 中用 for...in 循环迭代

Iterating with for... in loop in JavaScript

我有一个名为 objToArray 的空数组。如果键的值大于或等于 2,我正在尝试使用 for-in-loop 将哈希 checkObj 对象中的所有数字填充到数组中。

const checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

const objToArray = [];

for (let values in checkObj) {
  if (Object.values(checkObj) >=2 ) {
    objToArray.push(checkObj.values())
    }
}

console.log(objToArray);

到目前为止,我得到的 objToArray 是一个空数组,尽管它应该包含三个元素并且应该等于 [2, 5, 18]。

试试 Object.values(checkObj).filter(x => x >= 2);

  1. 获取包含 Object.values(checkObj) 的所有值的数组。
  2. 过滤数组并获取值 >= 2 with .filter(x => x >= 2).

如果您想使用 for ... in 循环 ,那么它会遍历 key,因此您可以使用 obj[key] 获得值。正如您声明的 for (let values in checkObj) values 对象将容纳 keycheckObj。因此,您可以使用 checkObj[values].

访问值

检查下面的输出。

const checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

// Approach 1
let result = Object.values(checkObj).filter(x => x >= 2);
console.log(result);

// Approach 2
const objToArray = [];
for (let values in checkObj) {
  if (checkObj[values] >= 2) {
    objToArray.push(checkObj[values]);
  }
}
console.log(objToArray);

这是你想要的吗?

for...in 语句遍历一个对象的所有可枚举属性,它应该是键而不是值。

const checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

const objToArray = [];

for (let key in checkObj) {
  if (checkObj[key] >= 2) {
    objToArray.push(checkObj[key])
  }
}

console.log(objToArray)

const checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

const objToArray = []; 

//changing the loop into a foreach loop that iterates over the keys
Object.keys(checkObj).forEach((key => {
  if (checkObj[key]) {
    objToArray.push(checkObj[key])
  }
}))

试试这个:

const checkObj = {
    oddNum: 1,
    evenNum: 2,
    foundNum: 5,
    randomNum: 18
};
    
const objToArray = [];

for (let [key, value] of Object.entries(checkObj)) {
    // console.log(`${key}: ${value}`);
    if(value>=2){
        objToArray.push(value);
    }
}

console.log(objToArray);

试试这个

const checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

let objToArray = [];
objToArray = Object.values(checkObj).filter(elem => elem >= 2);
console.log(objToArray);

试试这个:我希望你明白了..

let checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

let objToArray = [];

for (let values of Object.values(checkObj)) {
  console.log(values);
  if (values >=2 ) {
    objToArray.push(values)
    }
}