第 55 题:某公司 1 到 12 月份的销售额存在一个对象里面
let obj = {1:222, 2:123, 5:888}; obj.length = 12; let _obj = Array.from(obj).slice(1); let newObj = _obj.map((item) => {if(item === undefined) {return null;} else {return item;}}); console.log(newObj);
let obj = {1:222, 2:123, 5:888}; obj.length = 12; obj[Symbol.iterator] = Array.prototype[Symbol.iterator]; let _obj = [...obj].slice(1); let newObj = _obj.map((item) => {if(item === undefined) {return null;} else {return item;}}); console.log(newObj);
思考:
let _obj = [].slice.call(obj);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(32)
Array.from({length:12})
创建一个12个空位的数组.map()将
obj
中的每一项赋值给数组Array.from({1: 222, 2: 123, 5: 888, length: 13}).slice(1).map((v, i) => v || null)
没用es6数组好low
写的好low
function newData(obj){
obj.length = 12
let newObj = Array.from(obj).map((item,index) =>obj[index+1] || null)
return newObj;
}
console.log(newData({1:222, 2:123, 5:888}))
var format = function(sales) {
var arr = new Array(12).fill(null);
for (const month in sales) arr[month - 1] = sales[month];
return arr;
}
function objectToArray(object) {
var arr=new Array(12).fill(null)
var newArr=arr.map((x,index) => {
if(object[index+1]){
return object[index+1]
}else{
return null
}
})
return newArr
}
回答好踊跃,贴上自己的,其实使用的方法在上边都已经有了。感觉不同的方法的区别就是会使用到不同数量的新生成数组,另外代码量也不同,可以根据个人口味选择。
改了几次都没有缩进,才意识到这是 markdown
大概看了一下,大家的答案都差不多,个人非常喜欢简洁的代码
const obj = {1:222, 2:123, 5:888};
const result = Array.from({length:12},(item,index)=>(obj[index+1]?obj[index+1]:null));
console.log(result)
function formatData (data) {
let result = []
for (var i = 0; i < 12; i++) {
result[i] = null
}
let keys = Object.keys(data)
keys.forEach(o => {
result[parseInt(o) - 1] = data[o]
})
return result
}
var data = { 1: 222, 2: 123, 5: 888 }
formatData(data)
let obj=Object.assign({1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null},{1:222,2:123,5:888})
attr=Object.values(obj)
console.log(attr);
var obj = { 1: 222, 2: 123, 5: 888 };
let arr = [];
for(var i = 1; i <= 12; i++) {
if(obj[i]) {
arr.push(obj[i])
} else {
arr.push(null)
}
}
console.log(arr) //[222, 123, null, null, 888, null, null, null, null, null, null, null]
Array.from(Object.assign(obj,{length:12}),v=>v===undefined?null:v)
// 1-12月份的销售额;
var obj = {
1: 222,
2: 123,
5: 888,
}
var arr = new Array(12).fill(null);
var finalArr = arr.map((v, i, curr) => {
if (obj[i + 1]) {
return obj[i + 1];
} else {
return null;
}
});
console.log('--log--:', finalArr)
var obj = {1:222, 2:123, 5:888}
var c = new Array(12).fill(true).reduce((prev, cur, key) => {
prev[key] = obj[key + 1] || null
return prev
}, [])
function arrToObject(obj) {
let arr = [];
for (let i = 0; i < 12; i++) {
arr.push(null)
for (let key in obj) {
if(key == (i+1)){
arr.splice(i, 1, obj[key])
}
}
}
return arr;
};
let obj = {1:222, 2:123, 5:888};
怎么感觉我这好low啊!!