动态地将列推入新数组

Siv*_*ddy 1 javascript

我有一个清单

let data = [{order: 1, plannedid:32, userid:123 },
            {order: 2, plannedid:33, userid:124 }];
let keys = ['orderid','plannerid'];
Run Code Online (Sandbox Code Playgroud)

根据我们需要从数组中获取所有列的键。

我可以使用以下代码按预期获取数据,

let tempData =[];
 data.forEach(function(d) {
            tempData.push({
              orderid: d.orderid,
              plannerid: d.plannerid
            });
          });
Run Code Online (Sandbox Code Playgroud)

输出:

[{order: 1, plannedid:32},
{order: 2, plannedid:33 }];
Run Code Online (Sandbox Code Playgroud)

但如果我的键数组是动态的,我们如何根据键读取

ex: let keys = ['orderid','userid'];
Run Code Online (Sandbox Code Playgroud)

我们可以在 Push 函数中添加条件吗

Nin*_*olz 6

您可以映射新对象的键。

const
    data = [{ order: 1, plannedid: 32, userid: 123 }, { order: 2, plannedid: 33, userid: 124 }],
    keys = ['order', 'plannedid'];
    result = data.map(o => Object.fromEntries(keys.map(k => [k, o[k]])));

console.log(result);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)