使用条件将数组元素从某个位置移动到另一个位置

时间:2017-06-03 12:05:42

标签: javascript arrays data-manipulation

我正在寻找一种快速而强大的方法将数组元素移动到堆栈顶部。我的情况是: 我有一个像这样的对象数组:

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

我想将值为EUR的元素移动到数组的顶部,以便成为第一个元素。怎么做?

4 个答案:

答案 0 :(得分: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 :(得分: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);

Splice从数组中删除/推送元素。

arr.splice(0,0,el);

将el添加到第一个位置。

arr.splice(i,1);

删除i。

上的元素
arr.findIndex(el=>el.label===" EUR");

找到标有EUR的第一个元素的索引。

答案 2 :(得分:1)

请看以下小提琴。

  1. 识别您要移动的元素的索引。
  2. 删除该元素并取消移动数组。

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

    Live Example

答案 3 :(得分: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; }