Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用map()JavaScript将整个列从列索引列表移到多维数组的开头_Javascript_Arrays - Fatal编程技术网

使用map()JavaScript将整个列从列索引列表移到多维数组的开头

使用map()JavaScript将整个列从列索引列表移到多维数组的开头,javascript,arrays,Javascript,Arrays,我需要用n对的多维数组重新排序,其中n最多可以是50或更多 function rearrange(rows, pos) { return rows.map(function(cols) { return pos.map(function(i) { return cols[i]; }); }); } 如果我列出所有的列索引,我可以从中重新排序,这些索引也可以是50或更多 function rearrange(rows, pos) { return rows

我需要用n对的多维数组重新排序,其中n最多可以是50或更多

function rearrange(rows, pos) {
  return rows.map(function(cols) {
    return pos.map(function(i) {
      return cols[i];
    });
  });
}
如果我列出
所有的
列索引,我可以从中重新排序,这些索引也可以是50或更多

function rearrange(rows, pos) {
  return rows.map(function(cols) {
    return pos.map(function(i) {
      return cols[i];
    });
  });
}
我只想列出我要重新排序的列的索引,并将这些列移动到数组的开头,而将所有其他列按其保留的顺序保留

Bob|Carol|Ted|Alice
a  |b    |c  |d
1  |2    |3  |4
A  |B    |C  |D 
如果索引列表为list=[3] 所以我明白了

列表=[2,3]

Ted|Alice|Bob|Carol
c  |d    |a  |b
3  |4    |1  |2
C  |D    |A  |B

谢谢你

这可能不是最有效的途径,但应该对你正在努力实现的目标有效

  • 复制原始标题
  • 基于“toFront”数组以所需的排列创建新的标题数组
  • 映射所有行:
    • 使用原始标题将每行转换为对象
    • 映射新标题并从行对象返回关联值
  • const数据=[
    [“鲍勃”、“卡罗尔”、“特德”、“爱丽丝”],
    [“a”、“b”、“c”、“d”],
    [ 1, 2, 3, 4 ],
    [‘A’、‘B’、‘C’、‘D’]
    ];
    常量重新排列=(行=[],toFront=[])=>{
    常量originalHeaders=[…行[0]]
    const remainingHeaders=[…行[0]]
    const frontHeaders=toFront.map(索引=>{
    //将此项设置为null,稍后将被过滤掉
    remainingHeaders[索引]=空
    //获取原始标题值
    返回原始标题[索引]
    })
    //您不想直接修改原始标题,
    //因为你可能不会得到想要的结果
    //如果传递像[1,2]或where这样的'toFront'值
    //任何一个值都在另一个值之后
    常量newHeaders=[
    …正面标题,
    …remainingHeaders.filter(v=>v!==null)
    ]
    返回data.map(r=>{
    设行={}
    r、 forEach((值,i)=>{
    行[originalHeaders[i]]=值
    })
    返回newHeaders.map(h=>row[h])
    })
    }
    
    log(重新排列(数据,[2,1])
    我可以理解其中的70%,因此感谢您的评论!我会花些时间研究你写的东西。在我看来似乎很聪明。谢谢