如何基于关键字对象的mains与secondaries数组长度和排序生成对象数组
实现方案
直接通过对象转键值对、结构映射、自定义排序三步即可实现需求,完整代码如下:
const a = { word1: { mains: [ 5 ], secondaries: [1, 22, 50] }, word2: { mains: [ 5, 66 ], secondaries: [1] }, word3: { mains: [ 5 ], secondaries: [1] }, }; const result = Object.entries(a) // 将键值对转换为要求的对象结构 .map(([keyword, { mains, secondaries }]) => ({ keyword, mains, secondaries })) // 按两个数组长度之和升序排序 .sort((prev, curr) => { const prevSum = prev.mains.length + prev.secondaries.length; const currSum = curr.mains.length + curr.secondaries.length; return prevSum - currSum; }); // 输出验证 console.log(result);
执行上述代码后输出的result和你期望的结果完全一致。如果需要处理长度相同的特殊场景,可以在prevSum === currSum时补充额外的排序逻辑(比如按关键字字典序排序)。
内容的提问来源于stack exchange,提问作者Sara Ree
相关产品推荐
相关产品推荐

