掉了几根头发,琢磨出来的一个题

一个以数字组成的数组,实现输出id为数字,并且从大到小排序name(要求使用es6语法)!!! 代码: const source = [null,{ id

一个以数字组成的数组,实现输出id为数字,并且从大到小排序name(要求使用es6语法)!!!

代码:

const  source = [null,{ id: 4, name: 'test1' },{ id: {}, name: 'ssdf' },"test",{ id: () => {}, name: 'sf' },{ id: '6', name: 'test3' },{ id: 6, name: 'test4' },{ id: 7, name: 'test7' },{ id: 2, name: 'test2' },{ name: 'sf' },{},() => {}
]

要求最后得到结果为:['test2','test1','test4','test7']

解答:

//1、首先需要将数据中的无用数据( null,test,()=> )过滤掉
var filter1 = source.filter((item,index) => typeof(item) == 'object' && item !== null && item)
console.log(filter1) //得到的数据如下图1
//2、接下来筛选出数组数据中id值为 number 类型的
var filter2=filter1.filter((item,index)=> typeof(item.id)=='number')
console.log(filter2) //得到的数据如下图2
//3、得到有效数据之后,我们根据id大小来进行排序
var sortArr=filter2.sort((a,b) => a.id- b.id)
console.log(sortArr) //得到的数据如下图3
//4、最后获取数据中的name
sortArr=sortArr.map(item=>{return item.name
})
console.log(sortArr) //得到 ['test2','test1','test4','test7']
  • 图1
    在这里插入图片描述

  • 图2
    在这里插入图片描述

  • 图3
    在这里插入图片描述

当然还有好多解答方式,大家都可以试试哦!

咱们就是说!后台要是返回这样式的数组,咱们就跟他说 "揍嘛呢?!"