【问题标题】:Property 'values' does not exist on type 'ObjectConstructor' Typescript when using Object.values(map) [duplicate]使用 Object.values(map) 时,类型“ObjectConstructor”Typescript 上不存在属性“values”[重复]
【发布时间】:2019-10-22 13:12:33
【问题描述】:

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

我希望这能解释我想要做什么:

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”中填充我的 Map,如下所示。

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

【问题讨论】:

  • 请注意,this 是您问题的“正确”答案,即使它不是被接受的答案。

标签: javascript typescript object javascript-objects


【解决方案1】:

代码可以使用keys 来代替values。来自文档:

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);
})();

我猜这个替代方案就像魅力一样。

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2019-02-17
    • 2016-06-27
    • 2018-01-07
    • 2018-10-13
    • 1970-01-01
    • 2016-12-16
    • 2020-12-11
    • 2019-04-11
    相关资源
    最近更新 更多