【问题标题】:Typescript - Craft Json object from array dataTypescript - 从数组数据中制作 Json 对象
【发布时间】:2018-10-27 11:19:59
【问题描述】:

这个问题可能会被否决,但只是问我的知识......

我现在拥有的:

data = {COLUMN1: "DATA1", COLUMN2: "DATA2", COLUMN3: "DATA3", ..., COLUMNn: "DATAn"};

keyColumns = ["COLUMN2", "COLUMN5", "COLUMN9"];

keyValueMap = {};

我想得到什么:

keyValueMap = {COLUMN2: "DATA2", COLUMN5: "DATA5", COLUMN9: "DATA9"};

我尝试过的:

if (keyColumns.length > 0)
    {
      keyColumns.forEach(a => {
        keyvaluemap[a] = data[a];

      });
    };

我知道我不能做 keyvaluemap[a] = data[a],因为 keyvaluemap 只是一个对象。我如何制作它以使其获得我想要的所有值对?直到运行时才能知道 keyColumns 中的值列表。

【问题讨论】:

    标签: javascript arrays json typescript


    【解决方案1】:

    你可以使用数组的.reduce()方法:

    let data = {COLUMN1: "DATA1", COLUMN2: "DATA2", COLUMN3: "DATA3", COLUMN4: "DATA4",COLUMN5: "DATA5", COLUMN9: "DATA9"},
        keyColumns = ["COLUMN2", "COLUMN5", "COLUMN9"];
    
    let reducer = (obj, arr) => arr.reduce((a, c) => (a[c] = obj[c], a), {});
    
    console.log(reducer(data, keyColumns));

    【讨论】:

      【解决方案2】:

      试试这个解决方案:

      const result = keyColumns.reduce((acc, cur) => !!data[cur] ? ({...acc, [cur]: data[cur]}) : acc;
      }, {});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-02
        • 1970-01-01
        • 1970-01-01
        • 2018-10-30
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 2020-02-04
        相关资源
        最近更新 更多