首页 > 解决方案 > 如何根据另一个对象的键顺序的优先级创建一个对象?

问题描述

我有一个这样的对象-

const obj = {
    'veh1': 'Car',
    'veh2': 'Bicycle',
    'veh3': 'Truck',
    'wheels1': '4',
    'wheels2': '2',
    'wheels3': '8'
}

我想要一个对象,其条目映射 为 - veh1 到 Wheel1veh2 到 Wheels2veh3 到 Wheels3 等等 结果对象应该是这样的 -

const result = {
    'Car': '4',
    'Bicycle': '2',
    'Truck': '8'
}

我知道,我们可以直接这样做——

{
   [obj.veh1]: obj.wheels1,
   [obj.veh2]: obj.wheels2,
   [obj.veh3]: obj.wheels3
}

但是更好的方法是什么?条目的数量可以是任意数量“n”。

我怎样才能通过javascript实现这一点?

标签: javascriptobjectkeykey-valuecreation

解决方案


你可以这样做:

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];
    }
  }
}

推荐阅读