嗨,也许我是呆呆的或者只是累了:
但是我找不到更新/操作对象数组的简单解决方案。
(没有几个循环)
我正在(每秒通过侦听器回调)获取以下形式的状态更新:
status = {
uuid: "1065d90b-1a90",
status: "running",
data1: "xxx",
data2: "xxx", ...
}
status = {
uuid: "4075a90c-2b77",
status: "new",
data1: "xxx",
data2: "xxx", ...
}
它可能是新数据集(具有新的uniq uuid),也可能是现有数据集的更新(现有uuid)
我想将它们收集在一个表中,并且需要以下形式的数组:
[ {uuid: "1065d90b-1a90", status: "running", data1:"xxx", ...},
{uuid: "4075a90c-2b77", status: "new", data1: "xxx", ...}, {uuid: ...} ]
我尝试了基于uuid作为索引的哈希列表(更好的键:值):
let allStatus[status.uuid] = status
此方法有效且易于更新,但会产生:
{ 1065d90b-1a90: {uuid: "1065d90b-1a90", status: "running", data1:"xxx", ...},
4075a90c-2b77: {uuid: "4075a90c-2b77", status: "new", data1: "xxx", ...},
xxxxxxxx-xxxx: {uuid: ...}
}
之后,我可以将完整列表复制到所需的数组形式。但是我真的很想避免这种情况,因为这将每次(每秒)重新创建列表,这不好,因为它在角度表中用于显示。
如何改善和直接更新(创建)列表/阵列?
答案 0 :(得分:1)
以下是一些伪代码:
下面是一个代码片段,供您实际使用:
sh 'sudo docker exec broccoli_app_1 codecept run unit --env edge --coverage-html'
在这里您可以看到,entryItem与allStatus中的item2具有相同的uuid,只是data1和data2不同。因此,我们对其进行了更新。
您可以尝试更改incomingItem的uuid并将其注销。 allStatus应该包含三个项目。
现在,您可以在角度代码中遍历allStatus。