Javascript 如何根据条件在第一个位置创建一个新的数组位置?
我有一个名为Javascript 如何根据条件在第一个位置创建一个新的数组位置?,javascript,Javascript,我有一个名为data的数组,我需要创建一个新数组,其中匹配变量toBeFirst的元素是第一个数组 请注意,我无法触摸原始阵列数据 const toBeFirst = 'b' const data = [{name: 'a'},{name: 'b'},{name: 'e'}, {name: 'x'}] // final result const data = [{name: 'b'},{name: 'a'},{name: 'e'}, {name: 'x'} 你知道如何使用最新的js吗?可以使
data
的数组,我需要创建一个新数组,其中匹配变量toBeFirst
的元素是第一个数组
请注意,我无法触摸原始阵列数据
const toBeFirst = 'b'
const data = [{name: 'a'},{name: 'b'},{name: 'e'}, {name: 'x'}]
// final result
const data = [{name: 'b'},{name: 'a'},{name: 'e'}, {name: 'x'}
你知道如何使用最新的js吗?可以使用reduce?只需附加元素,如果是该特殊元素,则预先添加:
const result = data.reduce((arr, el) => el.name === toBeFirst ? [el].concat(arr) : arr.concat([el]), []);
但对数组进行变异可能是错误的:
data.unshift(data.splice(data.findIndex(el => el.name === toBeFirst), 1)[0]);
只需附加元素,如果是特殊元素,则在前面加上前缀:
const result = data.reduce((arr, el) => el.name === toBeFirst ? [el].concat(arr) : arr.concat([el]), []);
但对数组进行变异可能是错误的:
data.unshift(data.splice(data.findIndex(el => el.name === toBeFirst), 1)[0]);
如果你能提供你的测试代码那就太好了。无论如何,你可以使用双重过滤。要回答第二个问题:是的,您可以使用
reduce
,请参阅代码段
const toBeFirst='b'
常量数据=[{name:'a'},{name:'b'},{name:'e'},{name:'x'}];
const dataFirstB=data.filter(v=>v.name===toBeFirst)
.concat(data.filter(v=>v.name!==toBeFirst));
console.log(dataFirstB);
//使用减速器
const dataReduced=data.reduce((a,v)=>
v、 名字!==toBeFirst?[…a,v]:a,
data.filter(v=>v.name===toBeFirst));
console.log(数据缩减)代码>如果您提供了测试代码,那就太好了。无论如何,你可以使用双重过滤。要回答第二个问题:是的,您可以使用reduce
,请参阅代码段
const toBeFirst='b'
常量数据=[{name:'a'},{name:'b'},{name:'e'},{name:'x'}];
const dataFirstB=data.filter(v=>v.name===toBeFirst)
.concat(data.filter(v=>v.name!==toBeFirst));
console.log(dataFirstB);
//使用减速器
const dataReduced=data.reduce((a,v)=>
v、 名字!==toBeFirst?[…a,v]:a,
data.filter(v=>v.name===toBeFirst));
console.log(数据缩减)代码>