这个变量数据能与输出匹配吗?我试着组合它,但它不起作用,它只产生了1行,这与结果不匹配。我尝试过使用排序,但我仍然不知道如何显示数组的两个侧面-就像那样。
//Output Associative-Array
[
["row3", "row5"],
["row1", "row2"],
["row4", ""],
["", "row6"],
["row7", "row8"]
]这是我的代码
const arr = [
{id: 2, value: 'row1', position: 'S'},
{id: 2, value: 'row2', position: 'A'},
{id: 1, value: 'row3', position: 'S'},
{id: 3, value: 'row4', position: 'S'},
{id: 1, value: 'row5', position: 'A'},
{id: 4, value: 'row6', position: 'A'},
{id: 5, value: 'row7', position: 'S'},
{id: 5, value: 'row8', position: 'A'}
]发布于 2020-12-29 14:43:07
您可以使用数组reduce方法执行以下操作:
arr = [
{id: 2, value: 'row1', position: 'S'},
{id: 2, value: 'row2', position: 'A'},
{id: 1, value: 'row3', position: 'S'},
{id: 3, value: 'row4', position: 'S'},
{id: 1, value: 'row5', position: 'A'},
{id: 4, value: 'row6', position: 'A'},
{id: 5, value: 'row7', position: 'S'},
{id: 5, value: 'row8', position: 'A'}
]
arr.sort((a,b) => a.id - b.id);
ret = arr.reduce((prev, curr) => {
if(!prev[curr.id - 1]) {
prev[curr.id - 1] = ['', ''];
}
if(curr.position === 'A') {
prev[curr.id - 1][1] = curr.value;
} else {
prev[curr.id - 1][0] = curr.value;
}
return prev;
}, {});
console.log(Object.values(ret));
https://stackoverflow.com/questions/65462060
复制相似问题