使用Object.values(map)时,类型'ObjectConstructor'打字稿上不存在属性'values'

时间:2019-10-22 13:12:33

标签: javascript typescript object javascript-objects

我想遍历我的键/值对并将每个键的所有值推入其自己的数组中。每个键的这些值数组应推入单个输出数组。

我希望这可以解释我要做什么:

Input: map = {"hi":["hello","hey","howdy"],"bye":["Goodbye","Ciao"]}

Output:  output = [["hello","hey","howdy"],["Goodbye","Ciao"]]

这是我到目前为止所拥有的:

return Object.values(map)

关于为什么我在TypeScript中遇到错误的任何帮助。在Javscript中,它似乎可以编译并返回正确的答案。

 Property 'values' does not exist on type 'ObjectConstructor'

对于背景,这是分组字谜问题的一部分,因此我从提供的字符串数组“ str”中按如下方式填充地图。

 let map = {};
  str.forEach(anagram => {
    const sortedWord = anagram
      .split("")
      .sort()
      .join("");
    map[sortedWord] = map[sortedWord] || [];
    map[sortedWord].push(anagram);
  });
  return Object.values(map)
}

1 个答案:

答案 0 :(得分:1)

该代码可以使用values来代替使用keys。从文档中:

  

Object.keys()方法返回给定对象自己的可枚举属性名称的数组,其顺序与我们在普通循环中获得的顺序相同。

请在此处进一步阅读:Object.keys()

作为解决方案,我会考虑您的情况:

(function() {
  const input = {"hi":["hello","hey","howdy"],"bye":["Goodbye","Ciao"]};
  
  console.log('input', input);
  
  const output = Object.keys(input).map(key => input[key]);
  
  console.log('output', output);
})();

我想这种选择就像魅力一样。