如何将对象转换为数组并按对象内c属性的数值重复生成拼接元素
高效实现方案
直接复用原生API就能实现,兼顾性能和可读性,完整代码如下:
const items = { a: "arr", b: "brr", c: "3" }; // 提取除c外的属性值,空格拼接为基础元素 const baseElement = Object.entries(items) .filter(([key]) => key !== 'c') .map(([, val]) => val) .join(' '); // 按c的数值生成重复元素的数组 const result = Array(Number(items.c)).fill(baseElement);
关键说明
- 用
Object.entries而非Object.values:需要通过键名过滤掉c属性,避免把重复次数的数值误拼进基础字符串,且全程不会修改原对象,无副作用 - 用
Array().fill()生成数组:这是原生实现固定长度同值数组的最优方式,性能优于手写循环push,代码更简洁。本例中基础元素是字符串(基本类型),用fill无共享引用问题;如果后续要生成的基础元素是对象/数组等引用类型,需要替换为Array.from({ length: Number(items.c) }, () => ({...baseElement}))避免引用共享问题 - 拼接逻辑默认按对象属性的插入顺序拼接(符合ES2015+规范),和示例输入的输出完全匹配,无需额外排序
- 如果需要兼容
c为非数字的异常场景,可以把Number(items.c)调整为Number(items.c) || 0,避免生成异常数组
内容的提问来源于stack exchange,提问作者wentylz
相关产品推荐
相关产品推荐

