使用map()JavaScript将整个列从列索引列表移到多维数组的开头
我需要用n对的多维数组重新排序,其中n最多可以是50或更多使用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
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%,因此感谢您的评论!我会花些时间研究你写的东西。在我看来似乎很聪明。谢谢