2017-06-03 50 views
2

我正在寻找一种快速和可靠的方法的阵列的元件移动到堆栈的顶部。我的情况是: 我有对象的一个​​这样的数组:从位置移动一个数组元素到另一个条件

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

我想与价值EUR元素移动到阵列的顶部,从而成为第一个元素。这个怎么做?

回答

1

Array#sort()与尝试比较EUR。其相匹配的值相匹配的阵列

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; }

相关问题