gpt4 book ai didi

javascript - 在 JavaScript 中,如何按 asc/desc 对数组数组进行排序

转载 作者:行者123 更新时间:2023-11-30 11:04:31 24 4
gpt4 key购买 nike

技术:Angular 7、AngularCli、JS 和 TS。

在Js中如何按升序和降序对数组数组进行排序

这是我的示例数组:

this.tableRows = [
[ 'zz', 'cc' ],
[ 'aa', 'cc' ],
[ 'uu', 'dd' ]
];

我想按列位置和 asc/desc 对上面的内容进行排序。

这是我的 HTML:

<tr ls-table-row class="child-row" *ngFor="let row of tableRows">
<td ls-table-cell *ngFor="let cell of row">{{ cell }}</td>
</tr>

我将像这样传入类型和 columnPosition 的@inputs:

  @Input() public sortByColumnPosiition = 1;
@Input() public sortByType = 'asc';

这些解释了我要排序的列,类型解释了方向,例如描述

这是我当前的排序示例:

  sortByColumnPosition = 0;
sortByType = 0;

public sortBy(data: Array<Array<any>>) {
return [ ...data ].sort((a, b) => a[ this.sortByColumnPosition ].localeCompare(b[ this.sortByColumnPosition ]) * this.sortByType);
}

以上是我目前的尝试 - 但仅适用于第 0 列而不适用于第 1 列

最佳答案

您可以创建一个接受数组、列号和排序顺序(升序/降序)的函数。

你可以使用一个技巧来使用相同的函数进行 asc/desc 排序。有一个值为 1-1 的变量。始终将它与每个结果或 sort() 回调相乘。如果您将传递 1,它将对 -1

进行升序和降序排序

const tableRows = [
['zz', 'cc'],
['aa', 'cc'],
['uu', 'dd']
];

function sortBy(arr, col, type = 1) {
return [...arr].sort((a, b) => a[col].localeCompare(b[col]) * type)
}

console.log(sortBy(tableRows, 1)) //asc
console.log(sortBy(tableRows, 0, -1)) //desc

关于javascript - 在 JavaScript 中,如何按 asc/desc 对数组数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com