Sort an array of objects based on another array of ids

后端 未结 10 2147
故里飘歌
故里飘歌 2020-11-28 16:27

I have 2 arrays

a = [2,3,1,4]
b = [{id: 1}, {id: 2}, {id: 3}, {id: 4}]

How do I get b sorted based on a? My desir

10条回答
  •  广开言路
    2020-11-28 17:12

    Pretty good solution. Just keeping here for future use :)

    const sortBy = (array, values, key = 'id') => ((map) => values.reduce((a,i) => 
    a.push(map[i]) && a,[]))(array.reduce((a,i) => (a[i[key]] = i) && a, {}));
    

    Usage

    a = [2,3,1,4]
    b = [{id: 1}, {id: 2}, {id: 3}, {id: 4}]
    
    sortBy(b, a) // [{id: 2}, {id: 3}, {id: 1}, {id:` 4}]
    

提交回复
热议问题