ES6总结

1:如何把'红蓝蓝黄红黄蓝红红黄红' 转为 ['黄','红','蓝']markdown

const str = '红蓝蓝黄红黄蓝红红黄红'

const arr = str.split('')

const obj = {'黄': 0, '红':1 ,'蓝': 2}

arr.sort((x,y)=> obj[x] - obj[y])

console.log(Array.from(new Set(arr)))
复制代码

2: 把[{id:'1', name:'红'},{id:'2', name:'绿'},{id:'3', name:'蓝'}] 转为 {id: "1|2|3",name: "红|绿|蓝"}spa

const a = [{id:'1', name:'红'},{id:'2', name:'绿'},{id:'3', name:'蓝'}]
const b = a.reduce((result,item) =>{
          result.id = result.id ? `${result.id}|${item.id}`: item.id
          result.name = result.name ? `${result.name},${item.name}`: item.name
          return result
},{})
console.log(b)
复制代码

3: 去掉[{id:1,name:'xc'},{id:2,name:'ff'}]中id为2的对象3d

const a = [{id:1,name:'xc'},{id:2,name:'ff'}]
const b = [...new Set(a.filter(item => item.id !== 2))]
console.log(b)
复制代码

4: 实现groupBy方法code

const a = groupBy([
    {id: 1, name: '马大大', sex: 'male'},
    {id: 2, name: '冯橙橙', sex: 'female'},
    {id: 1, name: '冯大胖', sex: 'male'}
], x => x.sex)

function groupBy(collection, by) {
    return collection.reduce((acc, x) => {
        if (acc[by(x)]) {
            acc[by(x)].push(x)
        } else {
            acc[by(x)] = [x]
        }
        return acc
    }, {})
}
console.log(a)
复制代码

image.png

5: 转为树形格式数据orm

function ArrayToTree(list) {
    const map = new Map()
    list.forEach(item => {
        if (!map.has(item.pid)) {
            map.set(item.pid, [])
        }
        map.get(item.pid).push(item)
    })
    function recursive(pid) {
        return  map.get(pid).map(item => {
            if (map.has(item.id)) {
                item.children = recursive(item.id)
            }
            return item
        })
    }
    return recursive(0)
}
const a = [ { id: 1, pid: 0 }, { id: 2, pid: 0 },{ id: 3, pid: 1 },{ id: 4, pid: 1 }, { id: 5, pid: 2 }, { id: 6, pid: 2 }]
const data = ArrayToTree(a)
console.log(...data)
复制代码

image.png

6: 去重输出['a.b','c','d.e']对象

const array = ['a.b','a.b.c','c.d.e']
const set = new Set()
const b = array.map(item =>{
    const jj = []
    const items = item.split('.')
    items.forEach(i => {
        if(!set.has(i)){
            set.add(i)
            jj.push(i)
        }
    })
    return jj.join('.')
})
console.log(b); 
复制代码

image.png

7.输出 [200, 140, null, null, 400, null, null, null, null, null, null, null]get

const obj = {1:200,2: 140,5: 400}
function translate(obj){
return Array.from({length: 12}).map((_,index) => obj[index+1] || null)

}
console.log(translate(obj))
复制代码
相关文章
相关标签/搜索