【问题标题】:Write a function called values, which accepts an object and returns an array of all of the values in the object w/o using Object.values()编写一个名为 values 的函数,它接受一个对象并使用 Object.values() 返回对象中所有值的数组
【发布时间】:2020-12-07 08:32:48
【问题描述】:

目前正在做关于 JavaScript 的练习题。我的代码返回一个空数组,我不知道为什么:

function values(obj) {
  let arr = [];
  for (let i in obj) {
    for (let j in obj[i]) {
      arr.push(obj[i][j]);
    }

  }
  return arr;
}

console.log( values({ a: 1, b: 2, c: 3 }) );

【问题讨论】:

  • 如果您尝试获取对象的值,则不需要 2 个循环。你只需要for (let i in obj) arr.push(obj[i])。此外,还有一个名为 Object.values(obj) 的内置方法,它将对象的值作为数组返回。
  • 在您的第二个循环 for (let j in obj[i]) 中没有任何可迭代的内容。我不确定您的期望是什么,但是没有真正的方法可以遍历键("a""b""c")或值(123) .目前尚不清楚您试图用两个循环做什么。理想情况下,您只需要for (let i in obj) { arr.push(obj[i]); }

标签: javascript arrays javascript-objects


【解决方案1】:

我会这样做:

function values(obj) {
  const keys = Object.keys(obj);
  let values = [];
  keys.forEach(key => {
    values.push(obj[key]);
  });
  return values;
}

console.log(values({a: 'b', c: 'd', e: 'f'}));
没有人说你不能使用Object.keys() ;)

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多