请帮我做这件事!
我按月从数据库中获取数据数组。我遇到的问题是我正在获取像this
这样的数据[{January: 6}, {February: 2}, {October: 7}, {December: 4}, {November: 5374}]
只要有空值,我什至没有得到任何导致我工作出现问题的值,所以我想要像 this
这样的数据[{January: 6}, {February: 2}, {March: 0}, {April: 0}, {May: 0}, {June: 0}, {July: 0}, {August: 0}, {September: 0}, {October: 7}, {November: 5373}, {December: 4}]
但是数据是从数据库中动态获取的,它只给我大于 0 的值。我只想获得所有月份的默认值为 0。
答案 0 :(得分:2)
您可以构建一个对象并使用一组 minth 名称来创建一个对象数组。
const
year = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'September', 'October', 'November', 'December'],
data = [{ January: 6 }, { February: 2 }, { October: 7 }, { December: 4 }, { November: 5374 }],
object = Object.assign({}, ...data),
result = year.map(month => ({ [month]: object[month] || 0 }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:1)
您可以使用 Date.toLocaleString()
和 array#from
获取所有月份,然后将 0
分配给缺少的月份。
const input = [{January: 6}, {February: 2}, {October: 7}, {December: 4}, {November: 5374}],
allMonths = Array.from({length: 12},
(_,i) => new Date(2020,i).toLocaleString({}, {month: 'long'})),
lookup = Object.assign(...input),
result = allMonths.map(month => ({ [month]: lookup[month] || 0 }));
console.log(result);
答案 2 :(得分:0)
你可以在你的程序中指定一个默认列表,如果你没有从数据库中获取数据,你就返回到默认列表。
let defaults = [{January: 0}, {February: 0}, {March: 0}, {April: 0}, {May: 0}, {June: 0}, {July: 0}, {August: 0}, {September: 0}, {October: 0}, {November: 0}, {December: 0}];
let databaseValue = [{January: 6}, {February: 2}, {October: 7}, {December: 4}, {November: 5374}];
let monthToSearch = "June";
let databaseFound = databaseValue.find(o => o.hasOwnProperty(monthToSearch));
if (!databaseFound){
databaseFound = defaults.find(o => o.hasOwnProperty(monthToSearch));
}
console.log(databaseFound);
答案 3 :(得分:0)
给你! 您可以简单地转换获取的数据并通过迭代更新该对象。
var data = [{January: 6}, {February: 2}, {October: 7}, {December: 4}, {November: 5374}];
var theMonths = ["January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November", "December"];
var monthsfetched = data.map(x => Object.keys(x)[0]);
theMonths.map(mon => {
if(!monthsfetched.includes(mon)){
let missing_entry = {};
missing_entry[mon] = 0;
data.push(missing_entry);
}
})
console.log(data)