获取对象值的打字稿问题

时间:2021-07-17 12:36:05

标签: angular typescript object

我想从中获取值

[{"code":"RRR","name":"Name","rate":"1.17","$key":"MeJy8ClJvJy"}]

我使用了 Object.values(obj) 并且我得到了相同的

[{"code":"RRR","name":"Name","rate":"1.17","$key":"MeJy8ClJvJy"}]

虽然我尝试使用

    function* values(obj: string) {
      for (let prop of Object.keys(obj)) yield obj[prop as any];
    }

以及

Object.keys(obj).map(k => obj[k as any]);

这两个都让我产生了

 ["[", "{", "\"", "c", "o", "d", "e", "\"", ":", "\"", "R", "R", "R", "\"", ",", "\"", "n", "a", "m", "e", "\"", ":", "\"", "N","a","m","e" "\"", ",", "\"", "r", "a", "t", "e", "\"", ":", "\"", "1", ".","1", "7", .....

在 chrome Version 91.0.4472.164 (Official Build) (64-bit) 上 但有趣的是使用 TS Playground 日志是一样的

[{"code":"RRR","name":"Name","rate":"1.17","$key":"MeJy8ClJvJy"}]

但是如果我从中删除 [] 一切正常并且我打算让它工作。但唯一的问题是,我仅以这种方式获取数据。我正在使用 typescript 4.3.5angular 12.1。提前致谢

2 个答案:

答案 0 :(得分:2)

const data = [{"code":"RRR","name":"Name","rate":"1.17","$key":"MeJy8ClJvJy"}];

当您称呼它们时,[] 将其描述为 Array。所以你应该为这些使用数组函数。 {} 表示一个普通对象。

如果你想查看数组中的所有值,你会得到一个像这样的对象列表:

data.forEach((item) => console.log(item));

这将为数组中的每个项目记录一个项目。


如果要查看数组中对象的属性值,可以执行以下操作:

data.forEach((item) => console.log(Object.values(item)));

一个小而重要的提示。我完全赞成从 TypeScript 而不是简单的 JavaScript 开始,但在开始像 Angular 这样大的事情之前,首先要在你的脑海中巩固语言的基本概念。

答案 1 :(得分:0)

Spread 运算符应该这样做 -

console.log(Object.values(...[{"code":"RRR","name":"Name","rate":"1.17","$key":"MeJy8ClJvJy"}]))