在现有数组中用匹配键分割对象

时间:2019-01-17 09:01:27

标签: javascript

myArray   = ['1', '2', '3'];

myObj     = { 1-vehicle : 'car', 2-vehicle : 'bike', 3-vehicle : 'train' };

resultObj = {
    '1': { '1-vehicle': 'car' }, 
    '2': { '2-vehicle': 'bike' },
    '3': { '3-vehicle': 'train' }
};

我有一个对象,其中每个键都以数字开头,并且我也有带有一些值的数组。我试图匹配这些键和值并拆分对象。请帮我。预先感谢。

我已经尝试过了,并且在下面发布了我的代码,但是我不成功

{
    Object.keys(myObj).filter((key: any) => {
        for (const i in myArray) {
            if (myArray[i] === key.charAt(0)) {
                newObj[key] = myObj[key]
                resultObj[myArray[i]] = newObj
            }
        }
    })
}

2 个答案:

答案 0 :(得分:3)

您可以映射所需的零件并将对象分配给单个对象。

此解决方案的特点是封闭对象的组合键。

var array = ['1' , '2' , '3'],
    object = { '1-vehicle': 'car', '2-vehicle': 'bike', '3-vehicle': 'train' },
    result = Object.assign(
        ...array.map(v => (k => ({ [v]: { [k]: object[k] } }))(v + '-vehicle'))
    );

console.log(result);

答案 1 :(得分:2)

var res = {};
for(let k in myObj){
  if(k[0])res[k[0]]= {[k]:myObj[k]};
}

最简单,最短的解决方案是