这个之前的问题与我感兴趣的最接近。我尝试了几种indexOf()和filter()的变体,但都没有成功。
我有一个对象数组 (exampleDat
):
[{id:1, value:"100", name:"dog", D1: 10, D2: 67, D3: 33},
{id:2, value:"200", name:"cat", D1: 66, D2: 41, D3: 34},
{id:3, value:"300", name:"fish", D1: 23, D2: 45, D3:},
{id:4, value:"400", name:"mouse", D1: 13, D2: 55, D3:},
{id:5, value:"500", name:"snake", D1: 7, D2: 9, D3:}]
在另一个函数中,我返回一个我需要的“key”数组。该数组会动态地改变,因此不可能将它们全部打出来。例如,以下任何示例都是可行的,
useThese1 = ['D1','D2'] //Want exampleDat returned with only these key,value 'columns' returned
useThese2 = ['id','D1','D2','D3'] //Want exampleDat return with only these key,value 'columns' returned
useThese3 = ['value','D2','D3'] //Want exampleDat returned with only these key,value 'columns' returned
我需要动态地将useThese
数组中的值映射到exampleDat
数组中。
如果我知道确切的列,我可以手动输入如下:
exampleDat.map(d => {return {D1: d.D1, D2: d.D2}})
但是我需要类似这样的东西:
dat.map(d => useThese1.map(g => {return {something?}}) ???
在R中,简单易行的方法就是
exampleDat[,colnames(exampleDat) %in% useThese1]
。