【发布时间】:2021-08-25 17:54:57
【问题描述】:
这个问题已经被回答了一千次了,但是我这辈子都无法让它发挥作用。我有一个数组products,您猜对了,它包含产品。一个产品基本上是这样的:
product{
product.product_name,
product.price,
product.amount,
product.store_name,
product.image_url
}
不确定这是否是为 React 显示它的正确方法,但你明白了。我想在表格中显示这些产品。现在,我制作了一个需要对这些进行排序的下拉选择器。因此,例如,当有人在下拉列表中选择“价格”时,需要按价格订购包含产品的表格。目前我将它们排序如下:
if (order == 0){
sortedProducts = products.sort((a, b) => b.product_name - a.product_name);
} else if (order == 1){
sortedProducts = products.sort((a, b) => b.price - a.price);
} else if (order == 2){
sortedProducts = products.sort((a, b) => b.amount - a.amount);
} else {
sortedProducts = products.sort((a, b) => b.store_name - a.store_name);
}
var items = [];
for (var i = pageNo * pagination; i < sortedProducts.length; i++) {
[... convert to table rows ...]
}
return items;
我从this SO post得到了代码,用这个方法找到了另一个博客。但是,我不太了解它,它也不起作用。我的第一次尝试是这样的:
sortedProducts = products.sort(p => p.product_name);
对于产品名称,但遗憾的是这也不起作用。有人知道我如何做到这一点吗?
【问题讨论】:
-
compareFunction 中的减法不适用于字符串。你需要
localeCompare。或者您可以使用>运算符并有条件地返回 1 和 -1。这适用于数字和字符串。 -
是的,尤其是链接文档。谢谢!
标签: arrays reactjs react-native sorting