0

我正在尝试根据特定顺序对数组进行排序。数据本身将包括水果、价格等。我正在努力制作一个 sort() 函数来安排订单。

fruit = ["Banana", "Orange", "Apple", "Pear"];
const data = storeData.filter(...);

// sort the data
data.sort((a, b) => (a.fruit > b.fruit ? 1 : -1));   // output: apple, banana, orange, pear

我希望结果是banana, orange, pear, apple而不是apple, banana, orange, pearor banana, orange, apple, pear。我还在学习更多。谢谢!

顺便说一句,我使用的是 Reactjs 或基于 javascript 的平台。

4

2 回答 2

0

检查这个:

fruit.sort( (itemA , itemB) => defaultOrder.indexOf(itemA) - defaultOrder.indexOf(itemB)); 
于 2020-03-24T15:27:59.043 回答
0

这是可能的选项之一:

假设您需要过滤水果而不过滤任何东西,您可以使用以下内容:

fruit.sort((a,b) => defaultOrder.i(a) > defaultOrder.indexOf(b) ? 1 : (-1));

如需使用过滤数据,请改成fruit.sortlike data.sort

data.sort((a,b) => defaultOrder.indexOf(a) > defaultOrder.indexOf(b) ? 1 : (-1));

如果你想链接方法,这就是方法

fruit
.filter(a => a !== 'Banana')
.sort((a,b) => 
defaultOrder.indexOf(a) > defaultOrder.indexOf(b) ? 1 : (-1));

如果您有一个对象数组,则可以执行以下操作:

fruit.sort((x,y) => defaultOrder.findIndex(a => a == x.fruit  ) > defaultOrder.findIndex(b => b == y.fruit) ? 1 : (-1));

希望这可以帮助。

巴维克

于 2020-03-24T15:20:47.813 回答