Daily-Interview-Question icon indicating copy to clipboard operation
Daily-Interview-Question copied to clipboard

第 55 题:某公司 1 到 12 月份的销售额存在一个对象里面

Open zeroone001 opened this issue 6 years ago • 151 comments

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);

zeroone001 avatar Apr 15 '19 23:04 zeroone001

let obj = {1:222, 2:123, 5:888};
const result = Array.from({ length: 12 }).map((_, index) => obj[index + 1] || null);
console.log(result)

wangming-0215 avatar Apr 16 '19 00:04 wangming-0215

let data = {1:222, 2:123, 5:888};
let arr = Array.from({length:12}).map((it,i)=> data[i+1]||null);
console.log(arr)

vivvn avatar Apr 16 '19 00:04 vivvn

let data = {1:222, 2:123, 5:888};
let arr = Array.from({length:12}).fill(null);
keys(data).forEach(it=>arr[it-1] = data[it]);
console.log(arr);

vivvn avatar Apr 16 '19 00:04 vivvn

console.time();
let data = {1:222, 2:123, 5:888};
let arr = Array.from({length:12}).map((it,i)=> data[i+1]||null);
console.log(arr);
// default: 2.119873046875ms
console.timeEnd();

console.time()
let obj = {1:222, 2:123, 5:888};
let res = Array.from({length:12}).fill(null);
keys(obj).forEach(it=>res[it-1] = obj[it]);
console.log(arr);
// default: 0.7451171875ms
console.timeEnd();

vivvn avatar Apr 16 '19 00:04 vivvn

Array.from({length:12},(v,i)=>({1:222,2:123,5:888}[i+1])||null)

Seasonley avatar Apr 16 '19 00:04 Seasonley

let obj = {1:222, 2:123, 5:888};
Array.from({length:12},(item,index)=>obj[index+1]||null)

Moriarty02 avatar Apr 16 '19 01:04 Moriarty02

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啊!!

WQHASH avatar Apr 16 '19 01:04 WQHASH

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 }, [])

MaJiaXuan avatar Apr 16 '19 01:04 MaJiaXuan

// 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)

truexin1292 avatar Apr 16 '19 01:04 truexin1292

Array.from(Object.assign(obj,{length:12}),v=>v===undefined?null:v)

Yanhua67 avatar Apr 16 '19 01:04 Yanhua67

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]

GuoYuFu123 avatar Apr 16 '19 01:04 GuoYuFu123


var obj = {1:222, 2:123, 5:888};
obj.length = 13;
Array.from(obj,it=>it||null).slice(1);

vivvn avatar Apr 16 '19 01:04 vivvn

let data = { 1:222, 2:123, 5:888 }
const arr = new Array(12).fill(null).map((item, i) => data[i + 1] || item)
console.log('arr---------', arr)

lxinr avatar Apr 16 '19 01:04 lxinr

const obj = {1:222, 2:123, 5:888}
const arr = Array.from({length: 12}, (_, index) => (index + 1) in obj ? obj[index + 1] : null)
console.log(arr)

ZodiacSyndicate avatar Apr 16 '19 01:04 ZodiacSyndicate

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);

NANAYWY avatar Apr 16 '19 02:04 NANAYWY

for循环是最快的。。
var obj = {1:222, 2:123, 5:888}
function hander(obj){
    let arr = [];
  console.time()
    for (let 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]
    console.timeEnd() //default: 0.4609375ms
}

pangqiang avatar Apr 16 '19 02:04 pangqiang

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)

zxcweb avatar Apr 16 '19 02:04 zxcweb

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)

zo11o avatar Apr 16 '19 02:04 zo11o

let obj = {1:222, 2:123, 5:888}
let arr = Array.from({length:12},(v,i) => obj[i+1] || null )

lvwxx avatar Apr 16 '19 02:04 lvwxx

 let obj = {1:222,2:123,5:888};
 let arr = Array.from({length:12}).map((item,i) => obj[i+1]||'null');
 console.log(arr);
//  222,123,null,null,888,null,null,null,null,null,null,null

Array.from({length:12})创建一个12个空位的数组 .map()将obj中的每一项赋值给数组

mandyshen97 avatar Apr 16 '19 02:04 mandyshen97

Array.from({1: 222, 2: 123, 5: 888, length: 13}).slice(1).map((v, i) => v || null)

627235655 avatar Apr 16 '19 02:04 627235655

没用es6数组好low

/**
  * convert
  * @param {*} param 转换的12个月销售额 对象
  */
//  第 55 题:某公司 1 到 12 月份的销售额存在一个对象里面,如下:{1:222, 2:123, 5:888},请把数据处理为如下结构:[222, 123, null, null, 888, null, null, null, null, null, null, null]。

function convert(param) {
  if (typeof param === 'object' && param) {
    let arr = new Array(13);
    for (let index = 0; index < arr.length; index++) {
      let e = param[key] : null;
      arr[index] = e;
    }
    return arr.slice(1);
  } else {
    console.warn('输入不合理!');
    return;
  }
}

const obj = { 1: 222, 2: 123, 5: 888 };
let convertArr = convert(obj);
console.log(convertArr);

ZhanghaoH avatar Apr 16 '19 03:04 ZhanghaoH

let data = {1:222, 2:123, 5: 888}

let r = Array(12).fill(null)
r.forEach((v, i, arr) => {
    data[i] && (arr[i - 1] = data[i])
})
console.log(r)

bran-nie avatar Apr 16 '19 03:04 bran-nie

   const obj = { 1: 222, 2: 123, 5: 888 }
    const vali = (options) => {
        if (Object.prototype.toString.call(options) !== '[object Object]') {
            console.log('请传入对象')
            return false
        }
        return true
    }
    const getSale = (options) => {
        if (!vali(options)) {
            return
        }
        let arr = new Array(13)
        for (let i = 0; i < arr.length; i++) {
            arr[i] = null
            Object.keys(options).forEach(it => {
                if (parseInt(it) === i) {
                    arr[i] = options[it]
                }
            })
        }
        arr.shift()
        return arr
    }
    console.log(getSale(obj))

    // ES6
    const objToArr = (options) => {
        if (!vali(options)) {
            return
        }
        options = { ...options, length: 13 }
        let arr = Array.from(options);
        arr.shift()
        arr = arr.map(item => {
            if (item === undefined) {
                return item = null
            } else {
                return item
            }
        })
        return arr
    }
    console.log(objToArr(obj))

写的好low

xbcc123 avatar Apr 16 '19 05:04 xbcc123

    let result = Object.entries({ 1: 222, 2: 123, 5: 888 }).reduce(
        (prev, [key, value]) => { prev[key - 1] = value; return prev; },
        Array.from( { length: 12 }, (_) => null )
    );
    console.log(result);

BaconZhang avatar Apr 16 '19 06:04 BaconZhang

  Object.assign(Array(13).fill(null),{1:222, 2:123, 5:888}).slice(1)

NANAYWY avatar Apr 16 '19 07:04 NANAYWY

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}))

baobaoblue avatar Apr 16 '19 08:04 baobaoblue

var format = function(sales) { var arr = new Array(12).fill(null); for (const month in sales) arr[month - 1] = sales[month]; return arr; }

un-defined avatar Apr 16 '19 09:04 un-defined

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 }

MKLM0222 avatar Apr 16 '19 16:04 MKLM0222

回答好踊跃,贴上自己的,其实使用的方法在上边都已经有了。感觉不同的方法的区别就是会使用到不同数量的新生成数组,另外代码量也不同,可以根据个人口味选择。

const DATA = {1: 500, 3: 800, 5: 2000};
// const TARGET = [500, null, 800, null, 2000, null, null, null, null, null, null, null];

/** create three arrays */
const transformObjToArrayES6SliceMap = (obj) => Array.from(Object.assign({}, obj, { length: 13 })).slice(1).map((item) => item || null);

/** create one array */
const transformObjToArrayES6ForEach = (obj) => { 
       const arr = Array.from({ length: 12 }); 
       arr.forEach((item, index, arr) => { arr[index] = obj[index+1] || null;}); 
       return arr;
};

/** create two arrays */
const transformObjToArrayES6Map = (obj) => Array.from({ length: 12 }).map((item, index) => obj[index+1] || null);

/** create one array */
const transformObjToArrayFor = (obj) => {
	let arr = [];
	for (let i=0; i < 12; i++) {
		arr[i] = obj[i+1] || null;
	}
	return arr;
};

pengcc avatar Apr 16 '19 17:04 pengcc

一直比较喜欢简洁的代码

const obj = { 1: 222, 2: 123, 5: 888 };
const result = Array.from({ ...obj, length: 13 }, item => item || null).slice(1);
console.log(result);

zwmmm avatar Apr 17 '19 02:04 zwmmm

function formatData(data) {
	var length = 12;
	var dav = Object.keys(data);
	var newData = [];
	for(let i = 1;i<12;i++){
		newData.push(dav.includes(`${i}`) ? data[i] : null)
	}
	return newData;
}

neofanfei avatar Apr 17 '19 12:04 neofanfei

        let salePrice = {1:222, 2:123, 5:888}
        let result = Array.from({length:12}, (item,index) => {
            item =  salePrice[index+1] || null
        	return item
         });
        console.log(result)

superermiao avatar Apr 17 '19 15:04 superermiao

const obj = { 1: 222, 2: 123, 5: 888 }; const result = Array(12).fill(null).map((item, i) => obj[i + 1] || null);

好像都差不多。。。

hcl0101 avatar Apr 19 '19 06:04 hcl0101

var obj = { 1:222, 2:123, 5:888 } obj.length=12; for(var i=0;i<obj.length;i++){ if(obj[i] == undefined){ obj[i]=null;
} } var arr = []; arr = Array.prototype.slice.call(obj,0); console.log(arr); //还不会es6,思路是把obj变成类数组

qqjay2017 avatar Apr 21 '19 04:04 qqjay2017

let obj = {1:222, 2:123, 5:888};
[...Array(12)].map((item, index) => obj[index + 1] || null);

RichardPear avatar Apr 24 '19 13:04 RichardPear

const obj = {1:222, 2:123, 5:888}
const result = Array.from(Object.assign({length: 13}, obj)).slice(1).map(r => r || null)

Array-Like. An object has length property.

dolphinlin avatar May 06 '19 02:05 dolphinlin

最简短,apply+伪数组

Array.apply(null, {1:222, 2:123, 5:888, length: 12}).map(x => typeof x === 'number' ? x : null)

lhyt avatar May 16 '19 17:05 lhyt

Array.from({length: 12}).map((item, index) => data[index] || null);

dingLeiOnly avatar May 17 '19 10:05 dingLeiOnly

const data = { 1: 222, 2: 123, 5: 888, 8: 0 };

[...Array(12)].map((_, idx) => typeof data[idx + 1] === 'undefined' ? null : data[idx + 1]);

wingmeng avatar May 23 '19 00:05 wingmeng

最简短,apply+伪数组

Array.apply(null, {1:222, 2:123, 5:888, length: 12}).map(x => typeof x === 'number' ? x : null)

思路非常棒,就是结果不对 :joy:,无法与月份一 一对应,续貂调整:

Array.apply(null, {1:222, 2:123, 5:888, length: 12 + 1}).map(x => typeof x === 'undefined' ? null : x).slice(1)

wingmeng avatar May 23 '19 00:05 wingmeng

const obj = {1:222, 2:123, 5:888};
const newArr = Array(12).fill(null).map((v, i) => obj[i + 1]  ||  v);
console.log(newArr);  // [222, 123, null, null, 888, null, null, null, null, null, null, null]

zhangxuanlin avatar Jun 03 '19 09:06 zhangxuanlin

const parseData = (data) => { let result = [] for (let i = 1; i < 12; i += 1) { if (data[${i}]) { result.push(data[${i}]) } else { result.push(null) } } return result }

AchlysLove avatar Jun 13 '19 02:06 AchlysLove

const data = {1:222, 2:123, 5:888};
const format = data => {
  return [...Array(12)].map((i,j) => data[j+1]===undefined?null:data[j+1])
}
format(data)

HuaRongSAO avatar Jun 26 '19 02:06 HuaRongSAO

var obj = { 1: 222, 2: 123, 5: 888 }; var arr=new Array(12).fill(null); for (let key in obj) { if (obj.hasOwnProperty(key)) { arr.fill(obj[key],key-1,key) } }

xd20110642 avatar Jun 28 '19 10:06 xd20110642

test({1: 222, 2: 123, 5: 888});

function test(ob) {
    var res = [];
    for (var i = 0; i < 12; i++) {
        ob[i + 1] ? res.push(ob[i + 1]) : res.push(null);
    }
    return res;
}

crazyming9528 avatar Jun 28 '19 12:06 crazyming9528

const obj = {1:222, 2:123, 5:888}
console.log([...Array(13).keys()].slice(1).map(e=>obj[e]||null))

alphardex avatar Jul 02 '19 10:07 alphardex

const data = {1: 222, 2: 123, 5: 888, 6: 0}
Array.from({length: 12}).map((item, index) => data[index+1] === undefined ? null :  data[index+1])

rongda avatar Jul 09 '19 03:07 rongda

const obj = {1:222, 2:123, 5:888}
console.log([...Array(13).keys()].slice(1).map(e=>obj[e]||null))

这个要考虑const obj = {1: 0, 2: 100, 8: 80}

rongda avatar Jul 09 '19 03:07 rongda

Array.from({length:12},(x,i)=>a.hasOwnProperty(i+1)?a[i+1]:null)

yucopowo avatar Jul 09 '19 10:07 yucopowo

var obj = {1:222, 2:123, 5:888} Array.from({ length: 12 }).map((item, index) => { return obj[index + 1] || null })

hchaoVIP avatar Jul 10 '19 14:07 hchaoVIP

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);

obj.length = 12 这里的length应当为13

avonHu avatar Jul 11 '19 06:07 avonHu

let obj = {1:222, 2:123, 5:888} console.log(Array.from({length: 12}, (_, index) => obj[index+1] || null))

MrsignzZ avatar Jul 11 '19 09:07 MrsignzZ

var obj = {1:222, 2:123, 5:888}
var arr = new Array(12).fill(null)
for(key in obj){
    arr[key-1] = obj[key]
}
arr   // [222, 123, null, null, 888, null, null, null, null, null, null, null]
或者
arr.map(function(item,index){
    return item = obj[index + 1] || null
})    // [222, 123, null, null, 888, null, null, null, null, null, null, null]

Linnnsyuebaba avatar Jul 12 '19 03:07 Linnnsyuebaba

let obj = {1:222,2:123, 5: 888};
let arr = Array(12).fill(null);
arr.forEach((item, index)=> {
    if(obj.hasOwnProperty(index+1)){
        arr[index] = obj[index+1];
    }
} )
console.log(arr);

junchaohu avatar Jul 12 '19 06:07 junchaohu

var obj= {1:222, 2:123, 5:888}; var arr = []; arr.length = 12; for( var i in obj ) { arr[i-1] = obj[i] } console.log(arr);

rainbowzx avatar Jul 14 '19 05:07 rainbowzx

const o={1:222, 2:123, 5:888};
o.length=13;
Array.from(o).slice(1).map(v=>v||null)

qiannianchong25 avatar Jul 14 '19 10:07 qiannianchong25

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啊!!

Just a feel yet? U must be believe yourself, you are right, it lowest!

nyj000 avatar Jul 15 '19 07:07 nyj000

let obj = { 1: 222, 2: 123, 5: 888 };
let arr = [...Array(12).keys()].map(item => obj[item + 1] || null);
console.log(arr);

harryliuy avatar Jul 16 '19 06:07 harryliuy

第一种写法
var obj = {1:222, 2:123, 5:888}
var arr = Array.from({length:12},(_,index) => {
 return obj[index + 1]|| null
})

第二种写法
var arr = new Array(12).fill(null).map((item,index) => {
  return obj[index + 1]|| null
})

Arrogant128 avatar Jul 17 '19 07:07 Arrogant128

我想法这样。。。

let obj = {1:222, 2:123, 5:888};
obj.length = 13;
Array.apply(null,Array.prototype.slice.call(obj).slice(1)).map((item)=>item||null)

miu-wen avatar Jul 17 '19 09:07 miu-wen

var obj = {1:222, 2:123, 5:888}; var newObj = {}; Object.keys(obj).forEach((key)=>{ var newKey = String(key); newObj[newKey] = obj[key]; }) newObj.length =10; console.log([].slice.call(newObj))

nerrolk avatar Jul 17 '19 12:07 nerrolk

let a = new Array(12).fill(null) Object.entries({1:222, 2:123, 5:888}).forEach( item=>{ a[item[0]-1] = item[1] } )

1165468011 avatar Jul 18 '19 09:07 1165468011

let arr = Array.from({1:222, 2:123, 5:888,length:13},a=>a?a:null) arr.shift()

HCLQ avatar Jul 19 '19 02:07 HCLQ

@wangming-0215 Array.from第二个参数和map一样的 let obj = {1:222, 2:123, 5:888}; const result = Array.from({ length: 12 }, (_, index) => obj[index + 1] || null); console.log(result)

niujiangyao avatar Jul 19 '19 06:07 niujiangyao

let a = {1:222, 2:123, 5:888} let b = [] for (var i = 1; i < 13 ;i++) { if(a[i] !== undefined) { b.push(a[i]) } else { b.push(null) } }

XNNNN avatar Jul 22 '19 06:07 XNNNN

let obj = {1:222, 2:123, 5:888};

let arr = new Array(12).fill(null)



arr.map((item,i) => {
	Object.keys(obj).map(item => {
		if(i == item){
			arr[i] = obj[item]
		}
	})
})

console.log(arr)

blockmood avatar Jul 24 '19 06:07 blockmood

借用了一下下46题的思路

let obj = {1: 222, 2: 333, 5: 888};
obj.length = 12;
obj.splice =  Array.prototype.splice

let newarr = Array.from(obj).map(item => typeof item == 'undefined' ? 'null': item)
console.log(newarr)

mongonice avatar Jul 24 '19 09:07 mongonice

let obj = {1: 222, 2: 123, 5: 888};
let res = [...Array(12)].map((_, index) => obj[index+1] || null)
console.log(res)

mongonice avatar Jul 24 '19 09:07 mongonice

function trans() {
  const arr = [];
  for (let i = 1; i < 12; i++) {
    arr.push(obj[i] || null);
  }
  return arr;
}

bWhirring avatar Jul 25 '19 12:07 bWhirring

let obj = {1: 222, 2: 123, 5: 888}
let res = Array.from({length: 12}, (v, index) => obj[index + 1] || null)
console.log(res)

yingye avatar Jul 26 '19 08:07 yingye

const obj = {1:222, 2:123, 5:888};
const arr = [];
for(let i =1; i<13;i++){
	if(obj[i]){
		arr.push(obj[i]);
	}else {
		arr.push(null);
	}
}
console.log(arr);

LastStranger avatar Jul 28 '19 02:07 LastStranger

const format = (tar = {}, size = 12) => Array.from({ length: size }, (v, i) => (tar[i + 1] || null )); format({1:222, 2:123, 5:888})

fzh199410 avatar Jul 30 '19 03:07 fzh199410

const data = { '1':222, '2':123, '5':888 }
const dataList = [];
for (let i = 1; i <= 12; i++) {
    if (data.hasOwnProperty(i)) {
        dataList.push(data[i]);
    } else {
        dataList.push(null);
    }
}
console.log(dataList);

Travis-hjs avatar Jul 30 '19 07:07 Travis-hjs

简单的写一下

let a = {1:222, 2:123, 5:888}

function f(obj) { obj.length = 13 let arr = Array.from(obj) arr.shift() return arr.map(item => item ? item : null) }

f(a) // [ 222, 123, null, null, 888, null, null, null, null, null, null, null ]

Luyonzhang1993 avatar Jul 31 '19 09:07 Luyonzhang1993

let data = new Array(12).fill(null) let obj = {1:222, 2:123, 5:888} for (let key of Object.keys(obj)) { data[key] = obj[key] } console.log(data)

zhiweiweii avatar Aug 01 '19 10:08 zhiweiweii

'111111111111'.split('').map((item, index) => { return { 1: 222, 2: 123, 5: 888 } [index + 1] || null

})

qszy1210 avatar Aug 05 '19 09:08 qszy1210

Array.from({length:12},(_,i)=>{ return boj[i+1] || null })

Pineapple-Black avatar Aug 07 '19 04:08 Pineapple-Black

const obj = {1:222, 2:123, 5:888}   
obj.length = 13   
const array = Array.from(obj).map((item)=> item||null).slice(1,obj.length)   
console.log(array)   

helloyoucan avatar Aug 08 '19 13:08 helloyoucan

这样写比较好理解吧 let obj = {1:222, 2:123, 5:888}; let arr=[] for(let i=0;i<=11;i++){ arr[i]=obj[i+1]||null }

ashenBourne avatar Aug 09 '19 10:08 ashenBourne

let str = { 1: 222, 2: 123, 5:888 }; Array.apply(null, {length: 12}).map((ele,index) => {return str[index+1] ? str[index+1] : null}) ---> [222, 123, null, null, 888, null, null, null, null, null, null, null]

my-illusion avatar Aug 13 '19 09:08 my-illusion

 let mobj = { 6: 222, 4: 333, 12: 555, 1: 22 }
 let newArr = []
    for (let i = 0; i < 12; i++) {
      let res = mobj[i + 1]
      newArr.push(res || 'null')
    }
    console.log(newArr)

image

TheCityEmpty avatar Aug 22 '19 03:08 TheCityEmpty

let obj = { 1:222,2:123,5:888}; var tg = []; for(var i = 0; i < 12; i++) { tg.push(obj[i+1] ? obj[i+1] :'null') } console.log(tg) 首先想到的就是push+for循环

1449829449 avatar Aug 26 '19 06:08 1449829449

 let obj = {1:222, 2:123, 5:888};
    let arr=Array.from({length:12}).fill(undefined);
    for(let [key,value] of Object.entries(obj)){
        arr[key-1] = value;
 }

fnlearner avatar Sep 09 '19 06:09 fnlearner

function arr(obj = {1:222, 2:123, 5:888}) {
	let result = []
	for (let i = 0; i < 12; i ++) {
		if (obj[i]) {
			result[i] = obj[i]
		} else {
			result[i] = null
		}
	}
	return result
}

你们这些花里胡哨的,全都没我快哈哈哈

noel-blazblue avatar Sep 26 '19 03:09 noel-blazblue

var a={1:222, 2:123, 5:888}; var b=Array.from({length:12}).map((_,index)=>a[index+1]||null); console.log(b)

Stephen526 avatar Sep 29 '19 06:09 Stephen526

 // 朴素的
  function getSalary(obj) {
      let res = []
      for(let i = 1; i <= 12; i++) {
        res.push(obj[i] || null)
      }
      return res
    }
 // 学习一下别人的
 Array.from({length: 12}).map((_, index) => obj[index+1] || null)

aeolusheath avatar Oct 11 '19 10:10 aeolusheath

Array.from({length:12}).map((v,i)=>({1:11,2:123,5:888}[i+1] || null))

YeahPotato avatar Oct 17 '19 09:10 YeahPotato

function get12(obj) { var arr = Array(12).fill(null) for (let item in obj) { arr[Number(item) - 1] = obj[item] } return arr } get12({ 1: 222, 2: 123, 5: 888 })

Dzhaolei avatar Oct 18 '19 04:10 Dzhaolei

var obj={1:222, 2:123, 5:888} var arr=[] for(var j =0;j<12;j++){ obj[j+1]?arr[j]=obj[j+1]:arr[j]=null }

dengxiu avatar Oct 18 '19 07:10 dengxiu

Object.keys([...Array(12)]).map(index => data[index - -1] || null)

zhengwengang avatar Nov 14 '19 06:11 zhengwengang

// Array.from()可以将各种值转为真正的数组,并且还提供map功能。
// 这实际上意味着,只要有一个原始的数据结构,你就可以先对它的值进行处理,然后转成规范的数组结构,进而就可以使用数量众多的数组方法。
let obj = {1:222, 2:123, 5:888};
Array.from({length: 12}, (item, index) => {
  return obj[index + 1] || null
})
// 等价下面👇
let obj = {1:222, 2:123, 5:888};
Array.from({length: 12}).map((item, index) => obj[index + 1] || null);
// 一般思路
let obj = {1:222, 2:123, 5:888};
let arr = new Array(12).fill(null);
let keys = Object.keys(obj); // 此处是字符串数组
keys.map((item, index) => {
  arr[item - 1] = obj[item] 
})

Jesseszhang avatar Nov 14 '19 07:11 Jesseszhang

简单就完事儿了:

let obj = { 1: 222, 2: 133, 5: 888 };
let res = [];
for (let i = 1; i <= 12; i++) {
  obj[i] ? res.push(obj[i]) : res.push(null);
}
console.log(res);

fireairforce avatar Nov 19 '19 01:11 fireairforce

简单就完事儿了:

let obj = { 1: 222, 2: 133, 5: 888 };
let res = [];
for (let i = 1; i <= 12; i++) {
  obj[i] ? res.push(obj[i]) : res.push(null);
}
console.log(res);

简单应该是这样的 result = Array.from(Array(12), (item, index) => obj[index + 1] || null)

nyj000 avatar Nov 19 '19 02:11 nyj000

let data = { 1: 222, 2: 123, 5: 888 } let arrary = [] for (let i = 1; i <= 12; i++) { arrary.push(data[i] || 'null') } console.log(arrary)

zhouqj1414657557 avatar Nov 19 '19 08:11 zhouqj1414657557

emmmmm low了点

const saleList = obj => {
  const saleListofYear =  new Array(12).fill(null)
  for (const key in obj) {
    saleListofYear[key - 1] = obj[key]
  }
  return saleListofYear
}

coveyz avatar Nov 21 '19 03:11 coveyz

var test={1:222,2:123,5:888}; test.length=13; console.log(Array.from(test).map(item=>(typeof item==='undefined')?null:item).slice(1)) //[222, 123, null, null, 888, null, null, null, null, null, null, null]

lanOrage avatar Dec 02 '19 03:12 lanOrage

function objToArr(obj) {
    const arr = new Array(12).fill(null)
    for(let key in obj) {
        arr[key - 1] = obj[key]
    }
    return arr
}

骚操作的确很多,但我觉得代码可读性和可维护性也很重要吧?假如obj的范围是100W,但它只有1个元素,我们还傻乎乎地去遍历数组的每个元素么。。。

ChenCong6837 avatar Dec 04 '19 02:12 ChenCong6837

const obj = {1:222, 2:123, 5:888} let arr = Array(12) for (let i in obj) { arr[i] = obj[i] }

JimFirst avatar Dec 05 '19 09:12 JimFirst

var data = {1:222,2:123,5:888}; [...Array(12).keys()].map(i=>data[i+1] || null)

weely avatar Dec 16 '19 09:12 weely