我有以下代碼:
const blueData = {
"items": [
{
"id": 35,
"修訂": 1,
"upedAt": "2021-09-10T14:29:54.595012Z",
},
]
}
const redData= {}.
const greenData = {
"items": [
{
"id": 36,
"修訂": 1,
"upedAt": "2021-09-10T14:31:07.164368Z",
}
]
}
let colorData = [] ?
colorData = blueData.items ? [colorData, ...blueData.items] : colorData
colorData = redData.items ? [colorData, ...redData.items] : colorData
colorData = greenData.items ? [colorData, ...greenData.items] : colorData
我猜測spread operator在這里不是正確的方法,因為我在最后的colorData陣列中得到一些額外的陣列。我只是想建立一個單一的 "專案 "陣列,其中包含3個物件的所有 "專案"。
這里有一個在es6控制臺中的代碼鏈接。https://es6console.com/ktkhc3j2/
uj5u.com熱心網友回復:
。const blueData = { items: [ { id: 35, revision: 1, updatedAt: '2021-09-10T14:29:54.595012Z'/span>, }, ], };
const redData = {};
const greenData = { items: [ { id: 36, revision: 1, updatedAt: '2021-09-10T14:31:07.164368Z'/span>, }, ], };
const colorData = [...
...(blueData.items || [] )。
...(redData.items || [] )。
...(greenData.items || [] )。
];
console.log(colorData);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
也許我有點老套,但我會用concat來做這個:
concat()方法用于合并兩個或多個陣列。這個方法不會改變現有的陣列,而是回傳一個新的陣列。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat。
const blueData = {
"items": [
{
"id": 35,
"修訂": 1,
"upedAt": "2021-09-10T14:29:54.595012Z",
},
]
}
const redData= {}.
const greenData = {
"items": [
{
"id": 36,
"修訂": 1,
"upedAt": "2021-09-10T14:31:07.164368Z",
}
]
}
const colorData = [].concat(blueData.items,redData.items, greenData. items).filter(x => x)
console.log(colorData)
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
最后一個過濾器是用來洗掉未定義的值的
uj5u.com熱心網友回復:
將你的資料放入一個陣列,然后使用flatMap來解包每個.items:
[greenData, redData, blueData]. flatMap(d => d.items ? [])
//=> [ {id: 36, revision: 1, updatedAt: '2021-09-10T14:31:07.164368Z'}
//=> , {id: 35, revision: 1, updatedAt: '2021-09-10T14:29:54.595012Z'}]
如果你喜歡,你可以抽象出d => d.items ?? []用一點咖喱(沒有雙關的意思;)
const take = k => o => /span> o[k] ? [];
這就給了我們:
[greenData, redData, blueData].flatMap(take(' items')
如果你需要用不同的鍵來重復這個程序,我們甚至可以再進一步:
const concatBy = fn => xs => xs。 flatMap(x => fn(x))。
現在幾乎可以感覺到你是在用文字而不是代碼來表達你的意圖了:
const takeItems = concatBy(take(' items' ))。
takeItems([greenData, redData, blueData])。
//=> [ {id: 36, revision: 1, updatedAt: '2021-09-10T14:31:07.164368Z'}
//=> , {id: 35, revision: 1, updatedAt: '2021-09-
讓我們建立另一個函式:
const takeFood = concatBy(take('food'))。
takeFood([{food: ['
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/312748.html
標籤:
