ページからのデータを操作して、配列を操作して順序を変更しています。これまで、私は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);
これは、その後、私に素晴らしいですが、ソート配列の順序でオブジェクトの私の配列を与え、希望の効果:
私はこれをさらに進めて、一種の「ラウンドロビン」方式で配列を注文したいと思います。したがって、providerNameが "connexity"の最初のオブジェクト、次にproviderNameが "pricerunner"の最初のオブジェクト、次にproviderNameが "ebay"の最初のオブジェクト、次に先頭に戻り、providerNameが "connexity"などの2番目のオブジェクトなどがあります。
[
{
"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をここにデモがあります。 org/wiki/Comparability)を参照してください。 – Bergi
できることは、プロバイダ名ごとに1つずつ、複数の配列を作成することです。配列をたどり、新しい配列(各プロバイダ名に1つずつ)を設定します。各配列のプロバイダ名を優先順にトラバースして、元の配列に値を設定します。 –
'tags.map(t => retailers.filter(by))))transpose()。flatten()' - いいえ、 'by'も' transpose'も 'flatten'もES6の一部ではありません。あなたが何をしているのか分からなければ、Web上で多くの実装を見つけることができます。 – Bergi