如何直接替换数组对象中指定动态weekday的属性值?
解决动态属性替换的问题
嘿,我懂你的困扰!你写的代码里array[0].weekday = "1"之所以没生效,是因为点表示法没办法识别变量形式的属性名——它会把weekday当成一个新的字面量属性,而不是你变量里存的Mon。
要直接替换已知动态值对应的属性,你需要用方括号表示法,它能解析变量里的属性名,直接定位到你要修改的属性上,完全不用遍历整个数组,完美符合你的需求。
正确的代码示例
const array = [{ Mon: "0", Tue: "1", Wed: "0" }, { Mon: "0", Tue: "1", Wed: "0" }]; const weekday = "Mon"; // 用方括号访问动态属性,直接替换值 array[0][weekday] = "1"; // 验证一下,已经替换成功啦 console.log(array[0].Mon); // 输出: "1"
小补充:点表示法 vs 方括号表示法
- 点表示法:适合属性名是固定的、符合JS标识符规则(比如没有空格、特殊字符,不是数字开头)的情况,比如
obj.Mon。 - 方括号表示法:万能选手,不管是变量形式的属性名、带特殊字符的属性名(比如
obj["day-1"])还是数字属性名(比如arr[0]),都能搞定。
内容的提问来源于stack exchange,提问作者Arun Kumar M
相关产品推荐
相关产品推荐

