2 votes

Tri du deuxième tableau par rapport au premier en javascript

Par exemple, mon

Mainarray = [{label:a,value:5} ,
{label :b , value :4 },
{label :c , value :10},
{label :d , value :5}]

et mon tableau à trier est

array1 = [ {label :c ,value 5},{label :a ,value:2}

après que le tableau 1 soit trié, il doit être comme ceci

sortedarray= [{label:a,value :2} ,
{label :b , value :0 },
{label :c , value :5},
{label :d , value :0}]

Donc, fondamentalement, il doit être trié par rapport à l'étiquette de MainArray, et aussi si cette étiquette n'existe pas dans array1, il doit ajouter la même étiquette sur le même index avec la valeur 0.

0voto

jack.benson Points 1566

Vous devez établir une correspondance avec l'ensemble de données que vous souhaitez, puis trier l'ensemble de données mis en correspondance. Voici un exemple. J'espère que cela vous aidera !

const array = [
  { label: 'c', value: 5 },
  { label: 'b', value: 4 },
  { label: 'a', value: 10 },
  { label: 'd', value: 5 }
]

const toSort = [
  { label: 'b', value: 1 },
  { label: 'a', value: 5 },
  { label: 'c', value: 2 }
];

const mapToSort = array.map(_ => {
  const item = toSort.find(x => x.label === _.label);
  return item || { label: _.label, value: 0 };
})

const getIndex = item => array.findIndex(_ => _.label === item.label);
const sorted = mapToSort.sort((a, b) => getIndex(a) - getIndex(b));

console.log(JSON.stringify(sorted));

0voto

Nina Scholz Points 17120

Vous pourriez rassembler les nouvelles valeurs dans un Map et mappe le tableau de données avec de nouvelles valeurs ou zéro.

var data = [{ label: 'a', value: 5 }, { label: 'b', value: 4 }, { label: 'c', value: 10 }, { label: 'd', value: 5 }],
    array = [{ label: 'c', value: 5 }, { label: 'a', value: 2 }],
    values = new Map(array.map(({ label, value }) => [label, value])),
    result = data.map(({ label }) => ({ label, value: values.get(label) || 0 }));

console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X