![](/img/trans.png)
[英]Javascript reformat or map an array of objects to a new array of new objects? like reformating it and giving new keys (names) for values
[英]Javascript reformat or map an array of objects to a new array of new objects? like reformating it
我是 Arrays 和對象的新手,所以我整天都忙於完成這項任務
[ { "date": "1959:01", this"1": 138.89, "2": 139.39, "3": 139.74, "4": 139.69, "5": 140.68, "6": 141.17 }, { "date": "1959:07", "1": 141.7, "2": 141.9, "3": 141.01, "4": 140.47, "5": 140.38, "6": 139.95 }, { "date": "1960:01", "1": 139.98, "2": 139.87, "3": 139.75, "4": 139.56, "5": 139.61, "6": 139.58 }, { "date": "1960:07", "1": 140.18, "2": 141.31, "3": 141.18, "4": 140.92, "5": 140.86, "6": 140.69 }, { "date": "1961:01", "1": 141.06, "2": 141.6, "3": 141.87, "4": 142.13, "5": 142.66, "6": 142.88 }, { "date": "1961:07", "1": 142.92, "2": 143.49, "3": 143.78, "4": 144.14, "5": 144.76, "6": 145.2 }, { "date": "1962:01", "1": 145.24, "2": 145.66, "3": 145.96, "4": 146.4, "5": 146.84, "6": 146.58 }, { "date": "1962:07", "1": 146.46, "2": 146.57, "3": 146.3, "4": 146.71, "5": 147.29, "6": 147.82 }, { "date": "1963:01", "1": 148.26, "2": 148.9, "3": 149.17, "4": 149.7, "5": 150.39, "6": 150.43 }, { "date": "1963:07", "1": 151.34, "2": 151.78, "3": 151.98, "4": 152.55, "5": 153.65, "6": 153.29 }, { "date": "1964:01", "1": 153.74, "2": 154.31, "3": 154.48, "4": 154.77, "5": 155.33, "6": 155.62 }, { "date": "1964:07", "1": 156.8, "2": 157.82, "3": 158.75, "4": 159.24, "5": 159.96, "6": 160.3 }, { "date": "1965:01", "1": 160.71, "2": 160.94, "3": 161.47, "4": 162.03, "5": 161.7, "6": 162.19 }, { "date": "1965:07", "1": 163.05, "2": 163.68, "3": 164.85, "4": 165.97, "5": 166.71, "6": 167.85 }, { "date": "1966:01", "1": 169.08, "2": 169.62, "3": 170.51, "4": 171.81, "5": 171.33, "6": 171.57 }, { "date": "1966:07", "1": 170.31, "2": 170.81, "3": 171.97, "4": 171.16, "5": 171.38, "6": 172.03 } ]
這些就像公司在特定年份的收入,例如在 1959:01 開始時,從 1 到 6 是一年的前 6 個月,同年 1956:07 但“:07”中的差異是值同年的最后 6 個月(1 到 6 個月),所以我想讓 output 每個月的值和年份如下所示,請使用最容易理解的代碼。
[ { "year": 1996, "month": 1, "value": 88512.12 }, { "year": 1996, "month": 2, "value": 71212.12 }, { "year": 1996, "month": 3, "value": 1212.12 }, { "year": 1996, "month": 4, "value": 754212.12 },{ "year": 1996, "month": 5, "value": 545221.12 } ]
非常感謝幫助。
這是我的代碼,不認為它有幫助,我認為我希望有一個新的更容易和更易讀的代碼(編輯我認為這個比另一個更符合邏輯):
const month = {};
let i = 1
let m = 1
for (let obj of finance) {
const year = obj["date"].split(":")[0];
month[m] = obj[`${m}`]
// month = {...month}
value = month[0]
console.log('this is the value >>>>>>>>>>' + value)
formated[year] = {year ,month}
// delete formated[year]["date"];
i++
if (m < 6 ) {m++}
}
console.log(formated,"<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>", month);
fs.writeFileSync(
path.resolve(__dirname, "Try1.json"),
JSON.stringify(formated)
);
如果我正確理解了您的問題,那么您可以執行以下操作:
const financialResults = [ { "date": "1959:01", "1": 138.89, "2": 139.39, "3": 139.74, "4": 139.69, "5": 140.68, "6": 141.17 }, { "date": "1959:07", "1": 141.7, "2": 141.9, "3": 141.01, "4": 140.47, "5": 140.38, "6": 139.95 }, { "date": "1960:01", "1": 139.98, "2": 139.87, "3": 139.75, "4": 139.56, "5": 139.61, "6": 139.58 }, { "date": "1960:07", "1": 140.18, "2": 141.31, "3": 141.18, "4": 140.92, "5": 140.86, "6": 140.69 }, { "date": "1961:01", "1": 141.06, "2": 141.6, "3": 141.87, "4": 142.13, "5": 142.66, "6": 142.88 }, { "date": "1961:07", "1": 142.92, "2": 143.49, "3": 143.78, "4": 144.14, "5": 144.76, "6": 145.2 }, { "date": "1962:01", "1": 145.24, "2": 145.66, "3": 145.96, "4": 146.4, "5": 146.84, "6": 146.58 }, { "date": "1962:07", "1": 146.46, "2": 146.57, "3": 146.3, "4": 146.71, "5": 147.29, "6": 147.82 }, { "date": "1963:01", "1": 148.26, "2": 148.9, "3": 149.17, "4": 149.7, "5": 150.39, "6": 150.43 }, { "date": "1963:07", "1": 151.34, "2": 151.78, "3": 151.98, "4": 152.55, "5": 153.65, "6": 153.29 }, { "date": "1964:01", "1": 153.74, "2": 154.31, "3": 154.48, "4": 154.77, "5": 155.33, "6": 155.62 }, { "date": "1964:07", "1": 156.8, "2": 157.82, "3": 158.75, "4": 159.24, "5": 159.96, "6": 160.3 }, { "date": "1965:01", "1": 160.71, "2": 160.94, "3": 161.47, "4": 162.03, "5": 161.7, "6": 162.19 }, { "date": "1965:07", "1": 163.05, "2": 163.68, "3": 164.85, "4": 165.97, "5": 166.71, "6": 167.85 }, { "date": "1966:01", "1": 169.08, "2": 169.62, "3": 170.51, "4": 171.81, "5": 171.33, "6": 171.57 }, { "date": "1966:07", "1": 170.31, "2": 170.81, "3": 171.97, "4": 171.16, "5": 171.38, "6": 172.03 } ] // Extract semester and year: assign 2 if entry corresponds to second semester or 1 if it corresponds to the first // semester in the year const extractYearAndSemester = date => ({ year: date.split(":")[0], semester: date.split(":")[1] > 6? 2: 1 }) // For each entry, return an array of objects with the desired properties // Finally, flatten the array, so you don't end up with an array of arrays const formatResults = arr => arr. flatMap(entry => { const { year, semester } = extractYearAndSemester(entry.date) let semesterResults = [] for (let key in entry) { if (parseInt(key)) { semesterResults.push({ year, month: semester === 1? parseInt(key): parseInt(key) + 6, value: entry[key] }) } } return semesterResults }) console.log(formatResults(financialResults))
嘗試遍歷數據並解析每個記錄的屬性,如下所示。 在外循環結束時,您將在 monthData 變量中獲得所需格式的數據;
var data = [
{ "date": "1959:01", "1": 138.89, "2": 139.39, "3": 139.74, "4": 139.69, "5": 140.68, "6": 141.17 },
{ "date": "1959:07", "1": 141.7, "2": 141.9, "3": 141.01, "4": 140.47, "5": 140.38, "6": 139.95 },
];
var monthData = [];
for (let index = 0; index < data.length; index++) {
var item =data[index];
var dateArray = item.date.split(":");
var year = dateArray[0];
var baseMonth = Number(dateArray[1]);
for (var key in item) {
if (item.hasOwnProperty(key)) {
var val = item[key];
if (String(val).indexOf(":")== -1) {
monthData.push({
year:year ,
month: baseMonth-1 + Number(key),
value: val,
});
}
}
}
}
閱讀有關此 package 的信息,它將使您的生活更輕松:使用 _map - Lodash
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.