如何使用循环动态创建对象属性,为数组内对象的self属性赋值
问题原因
现有代码存在两个逻辑错误:
- 循环时将完整的换行拆分数组直接赋值给每个对象的
self属性,而非取拆分数组对应下标的单个值 - 初始
items数组长度固定为1,无法匹配textarea输入拆分后的内容长度,自然只能给第一个对象赋值
实现方案
方案1:根据输入内容直接生成全新items数组
如果不需要保留原有items数组的其他数据,直接基于拆分结果生成新数组即可,逻辑最简洁:
function process() { // 仅执行一次拆分操作,避免重复计算 const splitValues = document.getElementById('input').value.split('\n'); // 遍历拆分结果生成对应结构的对象数组 const items = splitValues.map(value => ({ self: value })); // 此处可添加后续使用items的逻辑 console.log(items); }
方案2:保留原有items数组,仅更新/补充对应属性
如果需要保留原有items数组中对象的其他属性,可先补全数组长度再对应赋值:
var items = [{}]; // 你的原有items数组 function process() { const splitValues = document.getElementById('input').value.split('\n'); // 补全items数组长度,和拆分结果长度对齐,空缺位置补空对象 while (items.length < splitValues.length) { items.push({}); } // 给对应下标的对象赋值self属性 splitValues.forEach((value, index) => { items[index].self = value; }); // 可选:如果输入内容比原有items短,截掉items多余的元素 // items = items.slice(0, splitValues.length); console.log(items); }
内容的提问来源于stack exchange,提问作者srcomptn
相关产品推荐
相关产品推荐

