如何在JavaScript中更新数组内对象元素的内容?
解决方法说明
首先要明确:你期望的{"1","2"}是无效的JavaScript语法——对象必须以键: 值的键值对形式存在,如果你只是想存储一组值,应该用数组["1","2"]或者Set集合;如果是想给对象添加属性,就得用键值对的格式。
下面分几种常见需求给出实现方式:
1. 把第一个元素改成包含"1"和"2"的数组
直接通过数组索引赋值,替换掉原来的空对象:
TimePickerList = [{}, {}, {}]; // 替换第一个元素为目标数组 TimePickerList[0] = ["1", "2"]; // 最终结果:[["1","2"], {}, {}]
2. 给第一个空对象添加属性(键值对形式)
如果是想在原对象上添加内容(而非替换成数组),可以直接给对象添加属性:
TimePickerList = [{}, {}, {}]; // 给第一个对象添加属性 TimePickerList[0]["1"] = "1"; TimePickerList[0]["2"] = "2"; // 最终结果:[{"1":"1", "2":"2"}, {}, {}]
3. 使用Set集合存储唯一值
如果需要存储不重复的集合,可以用Set对象替换原空对象:
TimePickerList = [{}, {}, {}]; TimePickerList[0] = new Set(["1", "2"]); // 最终结果:[Set(2) {"1", "2"}, {}, {}]
为什么你的原代码报错?
因为TimePickerList[0]是对象类型,而push()是数组的专属方法,对象没有这个方法,所以会抛出错误。
你完全可以更新数组元素的值:JavaScript数组是可变的,通过索引(比如TimePickerList[0])直接赋值就能替换对应位置的元素;如果元素是对象,也可以直接给对象添加/修改属性来更新内容。
内容的提问来源于stack exchange,提问作者Masir
相关产品推荐
相关产品推荐

