Javascript 无法在字符串上创建属性
在尝试使用以下代码递归设置空对象的属性时,我遇到了一个奇怪的问题: 简化代码Javascript 无法在字符串上创建属性,javascript,Javascript,在尝试使用以下代码递归设置空对象的属性时,我遇到了一个奇怪的问题: 简化代码 const birthdays = {}; // Loop -> Passing day, id and birthday birthdays[day] = day; birthdays[day][id] = birthday; Cannot create property '123' on string '06012017' 日期示例:'01012017' id示例:1547 生日示例:{name:Joh
const birthdays = {};
// Loop -> Passing day, id and birthday
birthdays[day] = day;
birthdays[day][id] = birthday;
Cannot create property '123' on string '06012017'
日期示例:'01012017'
id示例:1547
生日示例:{name:John}
错误消息
const birthdays = {};
// Loop -> Passing day, id and birthday
birthdays[day] = day;
birthdays[day][id] = birthday;
Cannot create property '123' on string '06012017'
我看到一些使用Angular的人有这个问题,但他们的答案并不能为我解决任何问题(如Angular特定的语法等)。在分配空对象的值之前,需要单独创建空对象。在这里使用
const
不是一个好主意,无论如何,这只是我的建议
const生日={};
var日=123;
var-id=21;
var生日=2016年;
//循环->过去的日子,身份证和生日
生日[日期]={};
生日[日期][id]=生日代码>我收到了一条类似的错误消息TypeError:无法在节点14.3.0(ES 2019)中的布尔值“false”上创建属性“false”,使用新的Javascript无分号语法,在下一行上有一个变量声明和赋值,后跟一个分解赋值
导致错误的代码:
var a = b ()
[c, d] = e ()
解决者:
var a = b ()
;
[c, d] = e ()
首先,定义对象:
let birthdays = {};
然后,获取要在该对象中使用的属性:
let day = '20210203';
let id = 77;
然后,创建一对两个属性(记住方括号,这是一个ES6特性,可以将变量用作键):
最后,形成如下主要对象:
birthdays = {...birthdays, ...pair};
瞧,您已经将kvp添加到一个空对象中,并且不会再出现“无法在字符串“20210203”上创建属性“77”的错误。它解决了我的问题!我把birthdays[day]
的初始值和日期本身弄乱了,使用birthdays[day]={}
完全有效错误似乎很清楚。你的问题是什么?@FelixKling我用birthdays[day]={}
为我修正了birthdays[day]
的起始日期,这段代码没有错误。它是完全有效的Javascript。您可以这样做:生日['01012017']='01012017'
,然后这个生日['01012017'][1547]={name:'John'}
,它不会触发任何此类错误。这是不正确的。对象不可编辑,因此不能对其使用扩展语法。这将触发一个错误:…生日
,以及此…配对
。您在哪里看到迭代@GetFree?尝试浏览器控制台中的所有行,您将看到没有抛出任何错误。我确实尝试过它们。3点语法…
要求其右侧的值为iterable。这就是为什么此…生日将抛出错误的原因。