javascript - 如何根据另一个对象的键顺序的优先级创建一个对象?
问题描述
我有一个这样的对象-
const obj = {
'veh1': 'Car',
'veh2': 'Bicycle',
'veh3': 'Truck',
'wheels1': '4',
'wheels2': '2',
'wheels3': '8'
}
我想要一个对象,其条目映射 为 - veh1 到 Wheel1,veh2 到 Wheels2,veh3 到 Wheels3 等等 结果对象应该是这样的 -
const result = {
'Car': '4',
'Bicycle': '2',
'Truck': '8'
}
我知道,我们可以直接这样做——
{
[obj.veh1]: obj.wheels1,
[obj.veh2]: obj.wheels2,
[obj.veh3]: obj.wheels3
}
但是更好的方法是什么?条目的数量可以是任意数量“n”。
我怎样才能通过javascript实现这一点?
解决方案
你可以这样做:
const vehicles = {};
const wheels = {};
const result = {};
for (key in obj) {
if (key.startsWith("veh")) {
const id = key.replace("veh", "");
vehicles[id] = obj[key];
if (wheels.hasOwnProperty(id)) {
result[vehicles[id]] = wheels[id];
}
} else if (key.startsWith("wheels")) {
const id = key.replace("wheels", "");
wheels[id] = obj[key];
if (vehicles.hasOwnProperty(id)) {
result[vehicles[id]] = wheels[id];
}
}
}
推荐阅读
- postgresql - 将 LOOP 合并到 SQL 中
- javascript - Javascript 日期在阿拉伯语语言环境中无法正确显示
- session - 登录后如何跳转到上一页
- javascript - Firebase 9.0.0.8-beta 无法访问 Cloud Firestore 后端。后端在 10 秒内没有响应
- python - 在 protonmail.com 上使用 selenium 时出现问题
- azure-devops - Release Pipeline 在 linux 服务器中解压 zip
- godot - AnimatedSpriteFrame 的几个 CollisionShape2D
- python - 音乐播放器 Python
- android - 我的微调器和页面标题之间的 Android Studio 空间
- javascript - 在 android 应用程序上看不到 EXTRA_PROCESS_TEXT - React Native+Java