gpt4 book ai didi

javascript - 我的代码有效但不知道为什么(使用对象)

转载 作者:行者123 更新时间:2023-11-30 11:35:33 25 4
gpt4 key购买 nike

我有以下对象:

var dataset = [
[
{"value":"PRE","formattedValue":"PRE"},
{"value":"2017-06-15 00:00:00","formattedValue":"15/06/2017 0:00:00"},
{"value":"COSTA RICA","formattedValue":"COSTA RICA"},
{"value":"6.15","formattedValue":"6,150"}
],
[
{"value":"PRE","formattedValue":"PRE"},
{"value":"2017-06-15 00:00:00","formattedValue":"15/06/2017 0:00:00"},
{"value":"EL SALVADOR","formattedValue":"EL SALVADOR"}
]
]

它太复杂而且有我实际上不需要的数据,所以我试着把它变成这样:

[
{
"estado": "PRE",
"fecha": "2017-06-15 00:00:00",
"pais": "COSTA RICA",
"precio": "6.15",
}
]

我终于做到了,但我不确定为什么我的代码能正常工作。我用这段代码完成了:

var datafinal = [];
function convertion(){
var dataobj = dataset.getData();
for(var x in dataobj){
datafinal[x] = { "estado": dataobj[x][0]["value"] };
datafinal[x]["fecha"] = dataobj[x][1]["value"];
datafinal[x]["pais"] = dataobj[x][2]["value"];
datafinal[x]["precio"] = dataobj[x][3]["value"];
}
}

如果您注意的话,您会看到我添加到新对象的第一个值使用的格式与其他值不同。

我发现如果我用第二种格式添加每个值,它什么也不会添加。但是如果我以第一种格式添加所有内容,它只会添加最后一个值;

所以,我用第一种格式制作了淡水河谷,用第二种格式制作了其余的,效果很好。

...为什么,有人可以向我解释为什么会这样吗?

最佳答案

这是因为一开始datafinal[x]还不存在,所以需要给它赋值,也就是赋给它一个对象。这就是第一个任务所做的。其他分配改变现有值,因为您不希望它们替换您在第一行分配的值。

注意其他赋值不赋给 datafinal[x] 本身,而是写入它的一个属性:所以你扩展了你在第一个赋值中赋值的对象。

事实上,第一个作业可以分为两部分:

datafinal[x] = {};
datafinal[x].estado = dataobj[x][0].value;

... 所以现在所有的属性分配看起来都一样(注意:您不需要这些文字属性名称的方括号表示法)。第一个赋值现在只是将值初始化为一个对象(而不是数字、字符串、 bool 值……)。没有这样的分配,您就没有对象,也无法为其分配属性。

如果将其写在一个对象字面量赋值中,您可能会更容易理解:

datafinal[x] = { 
estado: dataobj[x][0].value,
fecha: dataobj[x][1].value,
pais: dataobj[x][2].value,
precio: dataobj[x][3].value
};

关于javascript - 我的代码有效但不知道为什么(使用对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44598474/

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