如何从对象中获取无序的键数组

铁拳

我的 js 中有来自后端的数据,如下所示:

var list = {
    "6": {
        "id": 6,
        "name": "John",
        "age": 31
    },
    "42": {
        "id": 42,
        "name": "Alex",
        "age": 25
    },
    "3": {
        "id": 3,
        "name": "Tim",
        "age": 58
    },
};

然后我需要通过 ngFor 指令在我的 angular html 模板中显示这些数据。但首先我必须获得一组对象键:

var listKeys= Object.keys(list);

接下来我可以在模板中输出数据:

<div *ngFor="let item of listKeys">
    <p>{{list[item].id}}</p>
    <p>{{list[item].name}}</p>
    <p>{{list[item].age}}</p>
    <hr>
</div>

但问题是我的数据顺序发生了变化。我在 listKeys 下一个数组 ["3", "6", "42"] 中有。我想在那个 ["6", "42", "3"] 中有原始顺序我发现的解决方案之一是将键设为非数字字符串。例如:

var list = {
    "+6": {...},
    "+42": {...},
    "+3": {...},
};

但我无权访问后端。我需要另一个解决方案。


PS 我从后端获取数据的方式

  getData() {
    this._dataService.getList(this.name, this.age).subscribe(res => {
      this.list = JSON.parse(JSON.stringify(res));
      this.listKeys = Object.keys(this.list);
    });   
  }
我已经离开了

根据定义,对象是无序的属性集合。作为解决方案,您可以使用数组而不是对象:

第一步是以相同的顺序将来自服务器的响应转换为数组。

// Original JSON string received from API
var jsonString = `{
    "6": {
        "id": 6,
        "name": "John",
        "age": 31
    },
    "42": {
        "id": 42,
        "name": "Alex",
        "age": 25
    },
    "3": {
        "id": 3,
        "name": "Tim",
        "age": 58
    }
}`;

// Array of ordered id's
const orderedIds = [];

// Find all id's in the JSON string and push them to the array
const pattern = /"?id"?\: (\d*)/g;
let match;
while (match = pattern.exec(jsonString)) {
	orderedIds.push(parseInt(match[1]));        
}
 
 
// parse the original JSON object
const originalList = JSON.parse(jsonString);


// resulting ordered Array
const result = [];

// Push the object in the array by order
for(x of orderedIds) {
	result.push(originalList[x]);
}

// Log the resulting array
document.getElementById("result").innerText = JSON.stringify(result);
<pre id="result"></pre>
结果将是一个对象数组,其顺序与它们出现在 JSON 字符串中的顺序相同:

result = [
    {
        "id": 6,
        "name": "John",
        "age": 31
    },
    {
        "id": 42,
        "name": "Alex",
        "age": 25
    },
    {
        "id": 3,
        "name": "Tim",
        "age": 58
    },
];

在此之后,您可以在模板中使用它:

<div *ngFor="let item of result">
    <p>{{item.id}}</p>
    <p>{{item.name}}</p>
    <p>{{item.age}}</p>
    <hr>
</div>

这个数组确实保证了它的值的顺序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从任意对象的无序数组中获取随机的任意对象?

来自分类Dev

如何通过键从JavaScript字典数组中获取对象?

来自分类Dev

如何通过其值Javascript从对象数组中获取键

来自分类Dev

如何获取对象中的键

来自分类Dev

如何从对象数组中获取具有特定键唯一值的对象?

来自分类Dev

如何使用键从json数组中获取json对象属于一个json对象

来自分类Dev

如何在JavaScript中获取数组中对象的所有键

来自分类Dev

如何使用JavaScript中的“ for in”循环获取存储在对象中的键的数组值

来自分类Dev

如何通过键从对象属性的多维数组中获取值作为PHP中的数字

来自分类Dev

如何从对象数组中删除键

来自分类Dev

如何删除数组中对象的键

来自分类Dev

如何从对象数组中删除键

来自分类Dev

如何从对象值中获取键?

来自分类Dev

如何从对象数组中获取关闭对象?

来自分类Dev

如何从一键具有Array的对象数组中获取不同的值并计算JavaScript?

来自分类Dev

如何从具有键/值对对象的数组中获取值?

来自分类Dev

Postgresql从JSONB字段中的嵌套对象数组中获取键

来自分类Dev

如何基于最大键(日期是键)获取对象中的值

来自分类Dev

PHP对象数组获取键

来自分类Dev

如何通过键从多维数组中获取父键

来自分类Dev

D3使用对象数组从键中获取值

来自分类Dev

获取JavaScript对象数组中相同键的长度

来自分类Dev

在C#中获取对象数组的键和值

来自分类Dev

使用键获取对象中数组项的值

来自分类Dev

如何覆盖从 mongodb 返回的对象数组中对象的键?

来自分类Dev

如何从Java中的字符串数组获取数组键

来自分类Dev

如何使用PHP从数组中获取数组的键和值

来自分类Dev

如何使用数组中的键获取值数组

来自分类Dev

如何获取对象中的数组值?

Related 相关文章

  1. 1

    如何从任意对象的无序数组中获取随机的任意对象?

  2. 2

    如何通过键从JavaScript字典数组中获取对象?

  3. 3

    如何通过其值Javascript从对象数组中获取键

  4. 4

    如何获取对象中的键

  5. 5

    如何从对象数组中获取具有特定键唯一值的对象?

  6. 6

    如何使用键从json数组中获取json对象属于一个json对象

  7. 7

    如何在JavaScript中获取数组中对象的所有键

  8. 8

    如何使用JavaScript中的“ for in”循环获取存储在对象中的键的数组值

  9. 9

    如何通过键从对象属性的多维数组中获取值作为PHP中的数字

  10. 10

    如何从对象数组中删除键

  11. 11

    如何删除数组中对象的键

  12. 12

    如何从对象数组中删除键

  13. 13

    如何从对象值中获取键?

  14. 14

    如何从对象数组中获取关闭对象?

  15. 15

    如何从一键具有Array的对象数组中获取不同的值并计算JavaScript?

  16. 16

    如何从具有键/值对对象的数组中获取值?

  17. 17

    Postgresql从JSONB字段中的嵌套对象数组中获取键

  18. 18

    如何基于最大键(日期是键)获取对象中的值

  19. 19

    PHP对象数组获取键

  20. 20

    如何通过键从多维数组中获取父键

  21. 21

    D3使用对象数组从键中获取值

  22. 22

    获取JavaScript对象数组中相同键的长度

  23. 23

    在C#中获取对象数组的键和值

  24. 24

    使用键获取对象中数组项的值

  25. 25

    如何覆盖从 mongodb 返回的对象数组中对象的键?

  26. 26

    如何从Java中的字符串数组获取数组键

  27. 27

    如何使用PHP从数组中获取数组的键和值

  28. 28

    如何使用数组中的键获取值数组

  29. 29

    如何获取对象中的数组值?

热门标签

归档