我正在寻找一种快速而强大的方法将数组元素移动到堆栈顶部。我的情况是: 我有一个像这样的对象数组:
array = [{label: yu, value: uy}, {label: EUR, value: EUR}, {label: CY, value: CY}].
我想将值为EUR的元素移动到数组的顶部,以便成为第一个元素。怎么做?
答案 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)
请看以下小提琴。
删除该元素并取消移动数组。
array.unshift(array.splice(index,1)[0]);
答案 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; }