①有一个这样的数组。
const array = ['a', 'b', 'c', 'd', 'E'];
②有一个物体。
const obj = {
'b': ['aa', 'bb', 'cc'],
'a': ['ac', 'bc', 'cs'],
'c': ['as', 'b', 'c_1'],
'E': ['a_4', 'b_4', 'c_4'],
'd': ['a_4', 'b_4', 'c_4']
};
当您要按照①的排列顺序重新排列它们时。
我希望结果是这样的。
const obj = {
'a': ['ac', 'bc', 'cs'],
'b': ['aa', 'bb', 'cc'],
'c': ['as', 'b', 'c_1'],
'd': ['a_4', 'b_4', 'c_4'],
'E': ['a_4', 'b_4', 'c_4']
};
是否可以仅使用map函数进行排序?
答案 0 :(得分:1)
const array = ['a', 'b', 'c', 'd', 'E'];
const obj = {
'b': ['aa', 'bb', 'cc'],
'a': ['ac', 'bc', 'cs'],
'c': ['as', 'b', 'c_1'],
'E': ['a_4', 'b_4', 'c_4'],
'd': ['a_4', 'b_4', 'c_4']
};
// console.log(JSON.stringify(obj))
const res = Object.keys(obj)
.sort((a, b) => array.indexOf(a) - array.indexOf(b))
.reduce((a, k) => ({...a, [k]: obj[k] }), {})
console.log(JSON.stringify(res))
使用Object.fromEntries()
和Object.entries()
const array = ['a', 'b', 'c', 'd', 'E'];
const obj = {
'b': ['aa', 'bb', 'cc'],
'a': ['ac', 'bc', 'cs'],
'c': ['as', 'b', 'c_1'],
'E': ['a_4', 'b_4', 'c_4'],
'd': ['a_4', 'b_4', 'c_4']
};
// console.log(JSON.stringify(obj))
const res = Object.fromEntries(Object.entries(obj)
.sort((a, b) => array.indexOf(a[0]) - array.indexOf(b[0])))
console.log(JSON.stringify(res))
答案 1 :(得分:0)
我认为我们不需要排序,因为我们的目标是按照 array 排列 obj 。
const array = ['a', 'b', 'c', 'd', 'E'];
const obj = {
'b': ['aa', 'bb', 'cc'],
'a': ['ac', 'bc', 'cs'],
'c': ['as', 'b', 'c_1'],
'E': ['a_4', 'b_4', 'c_4'],
'd': ['a_4', 'b_4', 'c_4']
};
let result = array.reduce((accumulator, currentItem)=>{
accumulator[currentItem] = obj[currentItem];
return accumulator;
},{});
console.log(result)