如何生成非数组形式的对象列表,直接返回至外部文件?
解决方案
首先纠正你代码中的两个核心问题:
forEach的回调参数顺序错误:第一个参数是数组元素,第二个才是索引,你搞反了,导致value.value会引发错误。- 你试图把多个对象塞进单个
object里,这和需求中「多个独立对象」的要求不符。
要生成你需要的格式(多个独立对象+函数调用,无数组包裹),实际上需要生成JavaScript代码文本(因为JS函数只能返回单个值,无法直接返回多个独立对象/调用),具体实现如下:
export function setTemplateList() { const templateList = [ {title: 'About', value: 'aboutTemplate'}, {title: 'Contact', value: 'contactTemplate'} ]; // 把每个template项转换成对应格式的代码字符串 const codeFragments = templateList.map(item => `{ name: 'template', type: '${item.value}' }`); // 按需求插入setTemplateList()调用到指定位置(示例中是第二个对象之后) codeFragments.splice(2, 0, 'setTemplateList()'); // 用逗号+换行拼接所有片段,生成最终代码文本 return codeFragments.join(',\n'); }
代码说明
- 使用
map替代forEach:更适合从原数组生成对应格式的字符串数组,逻辑更清晰。 - 模板字符串构建对象代码:保证生成的对象格式和你需求一致,单引号、换行缩进都能保留。
splice插入函数调用:可以灵活控制setTemplateList()在代码中的位置,比如示例中插入到第二个对象之后。join拼接片段:最终返回的字符串就是你需要的格式,可以直接写入目标文件中使用。
如果你需要在目标文件中直接使用这些内容,调用setTemplateList()后将返回的字符串写入文件即可,比如:
// 假设用Node.js写入文件 const fs = require('fs'); fs.writeFileSync('./target-file.js', setTemplateList());
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

