我有這個物件(資料)陣列。這些是第一個索引:
0: Object
granularity_time: "total"
granularity_geo: "nation"
location_code: "norge"
border: "2020"
age: "90 "
sex: "female"
year: "1900"
week: "1"
yrwk: "1900-01"
season: "1899/1900"
x: "24"
date: "1900-01-01"
n: "219"
date_of_publishing: "2022-01-12"
tag_outcome: "death"
1: Object
granularity_time: "total"
granularity_geo: "nation"
location_code: "norge"
border: "2020"
age: "90 "
sex: "male"
year: "1900"
week: "1"
yrwk: "1900-01"
season: "1899/1900"
x: "24"
date: "1900-01-01"
n: "127"
date_of_publishing: "2022-01-12"
tag_outcome: "death"
它的統計物件是男女同齡。索引 0 代表 90 歲以上的女性,索引 1 代表 90 歲以上的男性。索引 2 適用于 80 歲以上的女性,索引 3 適合 80 歲以上的男性等。
我想格式化資料,以便每個索引包含兩個物件,分別針對同齡的男性和女性。
像這樣的東西:
const newData = [
{
woman: data[0],
men: data[1]
},
{
woman: data[2],
men: data[3]
},
{
woman: data[4],
men: data[5]
},
{
woman: data[6],
men: data[7]
},
{
woman: data[8],
men: data[9]
},
{
woman: data[10],
men: data[11]
},
{
woman: data[12],
men: data[13]
}
];
我試圖創建一個迭代資料的函式,但每個條目最終都未定義:
const formatData = (data) => {
const newData = [];
data?.map((item, i) => {
i % 2 === 0 ? newData.push({ woman: item[i], men: item[i ] }) : null;
});
return newData;
};
我在這里想念什么?
uj5u.com熱心網友回復:
由于輸出是輸入的一半,它實際上更像是一個 reduce()...
const data = [{ gender: "m", name: "sam" }, { gender: "f", name: "sally" }, { gender: "m", name: "allen" }, { gender: "f", name: "abby" }, { gender: "m", name: "jim" }, { gender: "f", name: "jill" }];
const newData = data.reduce((acc, obj, i) => {
i % 2 ? acc[acc.length-1].woman = obj : acc.push({ man: obj })
return acc;
}, []);
console.log(newData)
uj5u.com熱心網友回復:
您可以使用Array.from()andArray.map()從原始資料陣列創建所需的輸出。
新陣列的長度將為 data.length / 2,每個備用項將分配給輸出陣列中每個元素的 men 或 women 屬性。
const template = { year: 1900, location_code: 'norge' };
// Some array of input data...
const data = Array.from({length: 14}, (v,k) => ({...template, id: k, gender: ( k % 2 === 0 ? 'female':'male' )}));
const result = Array.from( { length: data.length / 2 }, (v, idx) => {
return { women: data[2*idx], men: data[2*idx 1], };
})
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
這實際上有效,但我不確定它是否是最佳實踐,因為我只是使用地圖來獲取 i..
const formatData = (data) => {
const newData = [];
data?.map((item, i) => {
i % 2 === 0
? newData.push({ woman: data[i], men: data[i 1] })
: null;
});
return newData;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417484.html
標籤:
