2017-06-03 19 views
2

です。配列の要素をスタックの先頭に移動するための迅速で堅牢な方法を探しています。私の場合は、次のとおりです。 私はこのようなオブジェクトの配列を持っている:配列要素をある位置から別の位置に移動します。条件は

array = [{label: yu, value: uy}, {label: EUR, value: EUR}, {label: CY, value: CY}]. 

私は最初の要素となるように、配列の先頭に値ユーロで要素を移動させたいです。これを行う方法?

答えて

1

Array#sort()で試しEUR .itsと一致する値を比較を

var array = [{ label: 'yu', value: 'uy'}, { label: 'EUR', value: 'EUR' },{ label: 'CY', value: 'CY' }] 
 

 
console.log(array.sort((a, b) => a.value == 'EUR' ? -1 : b.value == 'EUR' ? 1 : 0))

1
arr= [{label: "yu", value:" uy"}, {label:"EUR", value:"EUR"}, {label: "CY", value: "CY"}]; 



    arr.splice(0,0,arr.splice(arr.findIndex(el=>el.label==="EUR"),1)); 

console.log(arr); 

スプライス/は、内/外の要素を押し削除配列内で最初の場所で設定されたマッチングアレイ。

arr.splice(0,0,el); 

elを最初の位置に追加します。

arr.splice(i,1); 

iで要素を削除します。

arr.findIndex(el=>el.label===" EUR"); 

EURというラベルの最初の要素のインデックスを検索します。

1

下記のフィドルをご覧ください。

  1. 移動したい要素のインデックスを特定します。
  2. その要素を削除して配列をシフト解除するだけです。

    array.unshift(array.splice(index,1)[0]);

    Live Example

1

あなたは配列をソートしたいが、私はconditional operatorを使用せずに、直接比較のデルタを使用することをお勧めします。このソリューションの利点は、配列内の複数のオブジェクトで機能することです。同じキーと値のペアを持つすべてのアイテムが上にソートされます。

const toTop = (key, value) => (a, b) => (b[key] === value) - (a[key] === value); 
 
let array = [{ label: 'yu', value: 'uy' }, { label: 'EUR', value: 'EUR' }, { label: 'CY', value: 'CY' }]; 
 

 
array.sort(toTop('value', 'EUR')); 
 

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

関連する問題