javascript - 如何将对象数组转换为位置改变的数组
问题描述
我有一个对象数组:
[
{ id: 'ade', value: 8 },
{ id: 'rtl', value: 17 },
{ id: 'enu', value: 11 }
]
并希望将其转换为:
[
{ id: 'enu', value: 11 },
{ id: 'rtl', value: 17 },
{ id: 'ade', value: 8 },
]
但我不能扭转它等,因为我必须设置一个声明,即项目{ id: 'ade', value: 8 }
应该是最后一个项目,其余的必须按 id 排序。
我试图减少第一个数组并与第二个数组连接
const firstArr = arr.reduce((acc, cv) => {
if (cv.id === 'ade') {
acc.push(cv)
}
return acc
}, []))
const second = arr.splice(firstArr, 1).sort()
firstArr.concat(second)
但它失败了,似乎过度设计。我想做得更聪明。有任何想法吗?
请任何建议!
解决方案
您可以使用扩展运算符使代码看起来更短,但这是相同的逻辑:
const arr = //...your array of data
const parsedArr = [...arr.filter(o => o.id !== 'ade').sort((a, b) => a.id.localeCompare(b.id)), ...arr.filter(o => o.id === 'ade')];
所以第一部分是所有数组元素,最后没有你需要的特定元素,第二部分是最后一个元素。
希望我有所帮助:)
推荐阅读
- python - 为什么序列化器中的数据没有显示在 django 中?
- fish - 如何为鱼配置添加别名?
- sparql - 带有可选和过滤器的 Sparql 查询
- authorization - Azure Functions:在 Cosmos DB 绑定中使用用户
- reactjs - 在javascript中将类方法分成单独的模块
- javascript - 解析数组或承诺并获得结果
- python - 如何将日期时间的数据帧仅转换为时间?基本上删除 Python Pandas 中的日期元素
- pandas - 将 re 函数应用于混合 pandas 数据帧
- jsp - 将 HTTP 标头添加到 GET 请求超链接 JSP 页面
- javascript - JS(预期换行符为“LF”但发现“CRLF”.eslintlinebreak-style)问题