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

临西玛

我有以下对象:

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;

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我不知道为什么我的if语句有效

我不知道为什么这个动画有效

使用 WPF MVVM 过滤数据网格,它有效,但我不知道为什么

BFS和UCS算法。我的BFS实施有效,但我的UCS无效。不知道为什么

只有一个媒体查询有效,但我不知道为什么

我使用过滤器对吗?我不知道为什么这个解决方案有效

我删除结构条目的代码没有删除,我不知道为什么

我不知道为什么这段代码中有语法错误

我不知道为什么使用随附的python代码获得W与PT的多个图形

使用 Flask 框架的 Python 代码不起作用,我不知道为什么

我应该得到“无效”作为输出,但是我得到了“有效”作为输出,不知道为什么输出是错误的

我的算法应该搜索二进制,但我不知道为什么它确实有效

网络抓取缓慢但不知道为什么

我的python代码没有将数据插入数据库。我不知道为什么?

我不知道为什么我的代码是错误的?那是什么错呢?

我的代码给了我一个元组错误,我不知道为什么

我不知道为什么,但我收到错误:“AttributeError: 'super' 对象没有属性 '__getattr__'”

我收到 HTTP 错误 404 使用此代码下载 YouTube 不知道为什么我很确定尝试加载的链接没有任何问题

我不知道为什么我得到AttributeError

我的陈述无效,我也不知道为什么

调试代码,不知道为什么我没有得到正确的 x1 值

我不知道为什么我在 jsp 文件中收到这个简单代码的错误

除了ValueError在我的代码中不起作用我不知道为什么

我的Matlab代码不起作用,但我不知道为什么?

R-我不知道为什么我的代码无法运行?

我的 Javascript 代码返回 null,我不知道为什么

ArgumentOutOfRangeException,我不知道为什么

VLOOKUP给#N / A我不知道为什么

不知道为什么我的循环不循环