我有一個物件
const response = {
"message": "story records found successfully",
"result": [
{
"created_AT": "Thu, 13 Jan 2022 17:37:04 GMT",
"created_BY": "avinash",
"dateTime": "Thu, 13 Jan 2022 17:37:04 GMT",
"deleted_BY": "",
"flag": 0,
"project_ID": "infobot1234",
"stories": {
"steps": [
{
"intent": "test"
},
{
"action": "uttence_test_heading"
},
{
"intent": "fruits"
},
{
"intent": "testintent"
},
{
"action": "utter_txt1234"
},
{
"action": "uttence_test_heading"
},
{
"action": "utter_txt1234"
},
{
"intent": "test"
},
{
"intent": "fruits"
},
{
"action": "uttence_test_heading"
},
{
"intent": "my_localities12333qqqwq"
}
],
"story": "happy path rdedd"
},
"stories_ID": "f5728c4f-3717-40c2-8419-265d5d59bfd1",
"updated_BY": "",
"user_ID": "av1234"
}
],
"status_code": 0
}
由此我必須創建一個類似的結構,所以我的預期輸出是
const data = [
{intent: 'test', actions:['uttence_test_heading']},
{intent:'fruits', actions:[]},
{intent:"testintent", actions:["utter_txt1234","uttence_test_heading","utter_txt1234"]},
{intent:"test", actions:[]},
{intent:"fruits", actions:["uttence_test_heading"]},
{intent: "my_localities12333qqqwq", actions:[]}
]
我能得到的最接近的是使用response.result[0].stories.steps它給我的結果
[{
intent: "test"
}, {
action: "uttence_test_heading"
}, {
intent: "fruits"
}, {
intent: "testintent"
}, {
action: "utter_txt1234"
}, {
action: "uttence_test_heading"
}, {
action: "utter_txt1234"
}, {
intent: "test"
}, {
intent: "fruits"
}, {
action: "uttence_test_heading"
}, {
intent: "my_localities12333qqqwq"
}]
我怎樣才能達到我的預期結果我必須使用一些條件或類似的東西Object.keys然后應用任何條件,因為對于每個意圖都有一個動作,如果沒有動作那么它應該是一個空陣列。
我怎樣才能達到我的預期結果,請指導!
uj5u.com熱心網友回復:
您需要使用陣列方法遍歷每個陣列元素reduce,并檢查該元素是否是一個意圖。如果是,則將新物件推送到結果陣列,如果不是,只需使用以下.at()方法將新元素推送到最后一個索引意圖的操作陣列:
const steps = [
{"intent": "test"},
{"action": "uttence_test_heading"},
{"intent": "fruits"},
{"intent": "testintent"},
{"action": "utter_txt1234"},
{"action": "uttence_test_heading"},
{"action": "utter_txt1234"},
{"intent": "test"},
{"intent": "fruits"},
{"action": "uttence_test_heading"},
{"intent": "my_localities12333qqqwq"}
];
const result = steps.reduce((acc, e) => {
if (Object.keys(e)[0] === "intent") {
acc.push({ ...e, actions: [] });
}else {
acc.at(-1).actions.push(e.action)
}
return acc;
}, []);
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414907.html
標籤:
上一篇:基于另一列的一列中的值計數
