一个以数字组成的数组,实现输出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
当然还有好多解答方式,大家都可以试试哦!
咱们就是说!后台要是返回这样式的数组,咱们就跟他说 "揍嘛呢?!"