我有以下数组:
const result = [
[{value: 123, parentID: 1}, {value: 'string123', parentID: 2}],
[{value: 54764, parentID: 1}, {value: 'string321', parentID: 2}],
[{value: 321, parentID: 1}, {value: 'string565632', parentID: 2}],
]
我需要根据值对这个多维数组进行排序,但要选择的对象基于parentID
.
到目前为止我尝试过的:
const parentID = 1;
const sortedResult = result.filter((row) => {
const selectedColumn = row.find((column) => column.parentID === parentID));
return _.orderBy(selectedColumn, ['value'], ['asc']);
});
但这不起作用,有什么想法可以吗?
期望的输出是:
[
[{value: 123, parentID: 1}, {value: 'string123', parentID: 2}],
[{value: 321, parentID: 1}, {value: 'string565632', parentID: 2}],
[{value: 54764, parentID: 1}, {value: 'string321', parentID: 2}],
]
要对数组进行排序,您应该使用Array.prototype.sort
.
创建一个辅助函数,给定一个数组项(这里,它本身就是一个数组),找到带有 的对象parentID
,并提取其值。在.sort
回调中,在被比较的两个项目上调用该辅助函数,并返回差异:
const parentID = 1;
const getValue = arr => arr.find(item => item.parentID === parentID).value;
const result = [
[{value: 123, parentID: 1}, {value: 'string123', parentID: 2}],
[{value: 54764, parentID: 1}, {value: 'string321', parentID: 2}],
[{value: 321, parentID: 1}, {value: 'string565632', parentID: 2}],
];
result.sort((a, b) => getValue(a) - getValue(b));
console.log(result);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句