gpt4 book ai didi

javascript - 年份作为索引

转载 作者:行者123 更新时间:2023-12-01 02:07:55 25 4
gpt4 key购买 nike

我有这本字典

"name" : {
"2016" : {
"1" : "info"
}
}

我使用 json.stringfy 将其添加到 sessionStorage 中,并且运行良好。然后我将另一个字典附加到第一个字典中:

name: {
2016: {
1: {
info: {
0: {
"question": "qs1",
"information": "info1"
},
1: {
"question": "qs12",
"information": "info2"
},
}
}
}
}

我使用 json.stringfy 做了同样的转换为字符串。然后我注意到了这一点:

name: {
0 : "2016",
1 : null,
2 : null, //until 2016
2016: {
1: {
info: {
0: {
"question": "qs1",
"information": "info1"
},
1: {
"question": "qs12",
"information": "info2"
},
}
}
}

当 typeof 告诉我它是一个字符串而不是数字时,我不知道为什么要计数。另外,我不明白为什么它没有对第一本词典执行此操作。

这是代码:

(function($){
x = {
"info": {
"0": {
"question": "qs1",
"information": "info1"
},
"1": {
"question": "qs12",
"information": "info2"
},
}
}

var sesion = {};
var stringinfo;
sesion["name"]=["2016"];
sesion["name"]["2016"]=["1"];
sesion["name"]["2016"]["1"] = x;

stringinfo = json.stringfy(sesion);

console.log(sesion);
console.log(stringinfo)
}(jQuery))

尝试一下并告诉我使用数字(字符串)作为索引是否可以做到这一点!我该如何解决这个问题?谢谢。

最佳答案

您混淆了数组 ([]) 和对象 ({})。一开始你说:

I got this array:

"name" : {
"2016" : {
"1" : "info"
}

但这是一个对象。

你的问题有点难以理解。但是,如果您实例化一个空数组,并告诉它数字 2016 应具有某个值,它将用空 (null) 值填充其余部分。

您想要使用对象,而不是数组。查看对象和数组混合在一起的代码。您想要使用一个带有“2016”键的对象,而不是使用数字作为索引的数组。

查看提供的代码后添加信息

(顺便说一句,我在下面的解释中将“session”的拼写修正为“session”)

行:

var session = {}

创建一个空对象。该行:

session["name"]=["2016"];

将此对象的属性“name”设置为包含唯一字符串“2016”的数组。现在事情变得有趣了;您刚刚将 name 属性设置为数组,因此该行

session["name"]["2016"]=["1"];

使编译器使用以下逻辑;由于 session["name"] 是一个数组,因此当您引用 session["name"]["2016"]; 时,您可能并不打算在其上设置属性。字符串“2016”被强制转换为数字,并在其上放置一个新数组,其中包含字符串“1”。

此时我必须指出您的代码没有运行,修复它后的输出并不像您在问题中提出的那样。之后发生的事情与之前相同,只是将新数组放入 x 中对象的第一个位置。

如前所述,代码中的主要问题在于混合数组和对象。

更换线路

session["name"]=["2016"];

例如:

session["name"] = {}

实例化一个可以在其上放置“2016”等属性的对象,我不确定确切的目标是什么,但如果您想在该属性下创建一个数组,请执行以下操作:

session["name"]["2016"]=[x];

关于javascript - 年份作为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49949048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com