JS中的数组变换(举例)

137 阅读1分钟

数组跟对象的转换

let arr = [
    {名称:'动物', id: 1 ,parent: null},
    {名称:'狗', id: 2 ,parent: 1},
    {名称:'猫', id: 3 ,parent: 1}
]

使以上数组变成以下对象

{
id:1,名称: '动物', children: [
{id:2,名称: '狗', children: null },
{id:3,名称: '猫', children: null },
]
}

实现方法如下:

arr.reduce((result, item)=> {
if(item.parent === null){
result.id = item.id
result['名称'] = item['名称']
}else{
result.children.push(item)
delete item.parent
item.children = null
}
return result 
},{id:null, children:[]})

把数字变成星期

let arr = [0,1,2,2,3,3,3,4,4,4,4,6]
let arr2 = arr.map(补全代码)
console.log(arr2) // ['周日', '周一', '周二', '周二', '周三', '周三', '周三', '周四', '周四', '周四', '周四','周六']

实现1:(但不能把后续数字变成中文)

let arr2 = arr.map(item =>{
if (item >0 ){
return '星期'+ item}else{
return '星期日'
}
})
//["周日", "周1", "周2", "周2", "周3", "周3", "周3", "周4", "周4", "周4", "周4", "周6"]


完整实现:

let arr2 = arr.map((i)=>{ return {0:'周日',1:'周一',2:'周二',3:'周三',4:'周四',5:'周五',6:'周六'}[i] }) 

找出所有大于 60 分的成绩

let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let scores2 = scores.filter(补全代码)
console.log(scores2) //  [95,91,82,72,85,67,66, 91]

实现方法如下:

let scores2 = scores.filter(i => i>60 )

算出所有奇数之和

let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let sum = scores.reduce((sum, n)=>{
  补全代码
},0)
console.log(sum) // 奇数之和:598 

实现方法如下:

let sum = scores.reduce((sum, n)=>{
return (n%2 === 1 ? sum + n :sum )
},0)