JavaScript 【数组】转【对象】进行某些操作后转回【数组】后,得到的数组顺序和最开始的发生变化怎么解决

比如初始数组:

const arr1 = [

{id: 1, name: 'jack'},

{id: 3, name: 'rose'},

{id: 2, name: 'tom'}

]

数组对象相互转化方法:

export function arrToMap(arr: any[], key: string) {

return arr.reduce((map, item) => {

map[item[key]] = item

return map

}, {})

}

export function mapToArr(map: object) {

return Object.values(map)

}

使用:

const arrMap = arrToMap(arr1, 'id')

// 得到arrMap:

{

"1": {

"id": 1,

"name": "jack"

},

"2": {

"id": 2,

"name": "tom"

},

"3": {

"id": 3,

"name": "rose"

}

}

/*

在得到对象后由于对象的查询是O(1)所以更快,对其进行操作后转化为数组

*/

const arr2 = mapToArr(arrMap)

// 得到arr2,顺序已经变化

[

{

"id": 1,

"name": "jack"

},

{

"id": 2,

"name": "tom"

},

{

"id": 3,

"name": "rose"

}

]

回答

可以用MapMap的顺序是根据插入顺序

image.png

对象的查找时间复杂度小

代价就是失去了数组原有的顺序信息
当然你也可以把这部分信息加到对象里,每个对象都有唯一的 index 用作顺序标记

以上是 JavaScript 【数组】转【对象】进行某些操作后转回【数组】后,得到的数组顺序和最开始的发生变化怎么解决 的全部内容, 来源链接: utcz.com/a/42236.html

回到顶部