Im使用页面中的一些数据来操作和重新排序数组。到目前为止,我已经基于serperate“排序数组”顺序对我的对象数组重新排序。原来的数组是这样的:使用es2015重排动态数组
[
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"eBay",
"providerName":"ebay",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"Cheap-Coilovers.co.uk",
"providerName":"pricerunner",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"House of Fraser",
"providerName":"connexity",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"notonthehighstreet.com",
"providerName":"connexity",
"needProcessing":false
}
]
然后,我通过我的排序函数运行此阵:
function compare(a, b) {
let sortingArr = ['connexity', 'ecn', 'kelkoo', 'nexttag', 'pricerunner', 'shopping', 'ebay'];
if (sortingArr.indexOf(a.providerName) < sortingArr.indexOf(b.providerName)) {
return -1;
}
if (sortingArr.indexOf(a.providerName) > sortingArr.indexOf(b.providerName)) {
return 1;
}
return 0;
}
retailersOrdered.sort(compare);
这就给了我,我的对象数组中的排序阵列,这是伟大的秩序,期望的效果:
[
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"House of Fraser",
"providerName":"connexity",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"notonthehighstreet.com",
"providerName":"connexity",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"Cheap-Coilovers.co.uk",
"providerName":"pricerunner",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"eBay",
"providerName":"ebay",
"needProcessing":false
}
]
我现在想进一步以一种“循环”方式对数组进行排序。因此,第一个对象的providerName为“connexity”,第一个对象的providerName为“pricerunner”,第一个对象的providerName为“ebay”,然后回到开头,第二个对象的providerName为“connexity”等等。给出所需的输出:
[
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"House of Fraser",
"providerName":"connexity",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"Cheap-Coilovers.co.uk",
"providerName":"pricerunner",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"eBay",
"providerName":"ebay",
"needProcessing":false
},
{
"domain":"www.exampleurl.com/redirect",
"retailerName":"notonthehighstreet.com",
"providerName":"connexity",
"needProcessing":false
}
]
该数组是动态构建的,每个提供程序的对象数量也不相同。我努力想出一种按照提供者[1]的顺序对数组进行排序的方法,然后使用动态名称和长度的提供者[2]。我希望有一些可以帮助实现这一目标的es2015的新功能?以这种方式排列数组的任何知识都会很棒。
这不是一个*排序*,因为你没有一个[可比排序(HTTPS循环的布局://en.wikipedia。组织/维基/可比性)。 – Bergi
你可以做的是创建多个数组,每个提供者名称一个。遍历数组并填充新数组(每个提供者名称一个)。现在通过遍历每个数组的提供者名称来按照它们的优先顺序填充原始数组 –
只需执行'tags.map(t => retailers.filter(by(t)))。transpose()。flatten()' - 但不,'by','transpose'和'flatten'都不是ES6的一部分。但是,如果你不知道他们在做什么,你可以在网上找到很多实现。 – Bergi