gpt4 book ai didi

javascript - 如何创建一个适用于我的用户模型的不同属性的排序函数

转载 作者:行者123 更新时间:2023-12-01 01:48:59 25 4
gpt4 key购买 nike

我目前正在我的reactjs应用程序中使用以下函数渲染我的用户列表。

我想以某种方式创建一个通用排序函数,在其中我可以根据用户对象上的不同属性对用户进行排序:

User
-id
-sortOrder
-dateCreated
-name

是否可以编写一个排序函数,然后按 id、sortOrder、dateCreated 或 name 属性进行排序?

_renderUsers() {
const { users, dispatch } = this.props;
return users.map((user) => {
return (
<User
key={user.id}
dispatch={dispatch}
{...user}
/>
);
});
}

我在主渲染函数中调用它:

<div className="users-list">
{::this._renderUsers()}
</div>

最佳答案

在方向和数字排序方面具有更多灵 active 的版本

const users = [
{ id: 4, sortOrder: "asc", dateCreated: "2016-01-01", name: "Foo" },
{ id: 2, sortOrder: "desc", dateCreated: "2014-01-01", name: "Bar" },
{ id: 1, sortOrder: "desc", dateCreated: "2015-01-01", name: "Test" }
];

function sortArr(arr, key, ascending = true) {
if (!isNaN(arr[0][key])) {
return arr.sort((a, b) => (ascending ? a[key] - b[key] : b[key] - a[key]))
} else {
return arr.sort((a, b) => {
const ref = ascending ? a[key] : b[key];
const comp = ascending ? b[key] : a[key];
return ref.localeCompare(comp);
});
}
}

LOG(sortArr(users, 'name', false)) // string names descending
LOG(sortArr(users, 'id')) // numeric id ascending

function LOG(d) {
console.log(JSON.stringify(d, null, ' '));
console.log('\n*******************************\n')
}

关于javascript - 如何创建一个适用于我的用户模型的不同属性的排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51735712/

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