gpt4 book ai didi

javascript - 对数组中的对象进行操作

转载 作者:行者123 更新时间:2023-11-30 14:04:20 24 4
gpt4 key购买 nike

这对我来说是一项具有挑战性的任务。我有一个对象数组。我需要遍历一个数组,如果有“消息”键,将它添加到一个新数组中。但是这里有一件棘手的事情。如果“render”为真,我需要获取“stageID”(例如在第一个元素 stadeID = 3 中)并移动到该数组中的第三个元素,如果有则获取“message”,再次将其添加到数组并检查对于“渲染”状态,一直循环直到渲染为假。如果元素中没有“消息”键,但渲染为真,无论如何我需要通过它的 stageID 移动到元素。

P/S 我总是需要从第一个元素获取消息,是否无关紧要 渲染是否为真

[
{
"algID": 0,
"render": true,
"message": "first message",
"stageID": "3"
},
{
"algID": 0,
"render": false,
"message": "second message",
"message_type": "text"
},
{
"algID": 0,
"render": true,
"message": "third message",
"message_type": "text",
"stageID": "5"
},
{
"algID": 0,
"render": false
},
{
"algID": 0,
"render": false,
"stageID": "4"
},
{
"algID": 0,
"render": false
}
]

这是我的功能。我将第一个元素“消息”添加到数组,检查“渲染”,但我不知道它如何使用“stageID”循环移动通过数组

displayData(step) {
let arrayWithMessage=[]
for (let z = 0; z < step.length; z++) {
if ("message" in step[z]) {
arrayWithMessage.push(step[z].message)
}
if (step[z].render === true) {
console.log("reder true", step[step[z].stageID - 1])
}
}
}

预期输出:['第一条消息','第三条消息']

最佳答案

您可以迭代数组并将下一个元素或 stageID - 1 作为新索引。

var data = [{ algID: 0, render: true, message: "first message", stageID: "3" }, { algID: 0, render: false, message: "second message", message_type: "text" }, { algID: 0, render: true, message: "third message", message_type: "text", stageID: "5" }, { algID: 0, render: false }, { algID: 0, render: false, stageID: "4" }, { algID: 0, render: false }],
result = [],
i = 0;

while (data[i]) {
if (data[i].message) result.push(data[i].message);
if (data[i].render) {
i = data[i].stageID - 1;
continue;
}
i++;
}

console.log(result);

关于javascript - 对数组中的对象进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55727531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com