JavaScript数组循环排序:将booleankey:true元素置于新数组首位
如何将数组中指定元素始终放在新数组首位?
嘿,我来帮你搞定这个需求!你的核心目标是把原数组中booleankey为true的元素,转换结构后放在新数组B的最前面,其余元素跟在后面对吧?
先看你原来的代码,已经用map完成了元素结构的转换,但缺少了排序/分组的逻辑。这里有两种简单的实现方式:
方法一:分组拼接(直观稳定)
这种方法先把转换后的元素分成两组,再把true的组放在前面拼接,能保留原数组中同组元素的相对顺序:
function createArrayB(arrayA) { // 第一步:将原数组元素转换为你需要的新结构 const transformedItems = arrayA.map(entry => ({ newkey: entry.key1, newbooleankey: entry.booleankey })); // 第二步:把转换后的元素分成两组 const trueItems = transformedItems.filter(item => item.newbooleankey); const falseItems = transformedItems.filter(item => !item.newbooleankey); // 第三步:把true组放在前面,拼接成最终数组B return [...trueItems, ...falseItems]; }
方法二:使用sort排序(代码更简洁)
如果不纠结同组元素的原顺序,也可以用sort方法直接在转换后的数组上排序,让true的元素排在前面:
function createArrayB(arrayA) { return arrayA // 先转换元素结构 .map(entry => ({ newkey: entry.key1, newbooleankey: entry.booleankey })) // 排序规则:true元素优先级更高,排在前面 .sort((a, b) => { if (a.newbooleankey && !b.newbooleankey) return -1; if (!a.newbooleankey && b.newbooleankey) return 1; return 0; }); }
测试验证
用你给出的数组A测试:
const arrayA = [ { "key1": "value121212", "booleankey": false }, { "key1": "value143434", "booleankey": false }, { "key1": "value1454545", "booleankey": true } ]; console.log(createArrayB(arrayA)); // 输出结果: // [ // { newkey: 'value1454545', newbooleankey: true }, // { newkey: 'value121212', newbooleankey: false }, // { newkey: 'value143434', newbooleankey: false } // ]
完全符合你的需求哦!
内容的提问来源于stack exchange,提问作者Parameswar
相关产品推荐
相关产品推荐

