2017-08-09 60 views
0

我有一个值的对象,我试图用对象中的键和值填充两个数组。不附加到数组的JavaScript数据

我的对象:

obj = {19455746: 7476, 22489710: 473} 

环路试图追加数据:

var sensorNameArray = []; 
var sensorDataArray = []; 
for(var i in obj) { 
    sensorNameArray.push[i]; 
    sensorDataArray.push[obj[i]]; 
} 

在两个数组打印出来为空的时刻。我预计outout会是这样的:

sensorNameArray = [19455746, 22489710]; 
sensorDataArray = [7476, 473]; 
+6

你的语法不正确,应该是'推()','不按[]' –

+0

哈哈,谢谢,不知道我怎么没发现这一点。现在都在工作。 – Colin747

+0

@MikaelLennholm如果你想添加评论作为答案,我会接受。 – Colin747

回答

0

语法push[]不调用函数,它试图访问函数对象的属性。它不会抛出错误,因为在Javascript中,函数是对象,并且此语法在技术上是有效的。

因此,只需修复语法为push()以实际调用该函数。

2

推的是一个函数,而不是一个阵列,它使用括号没有括号:

for(var i in obj) { 
    sensorNameArray.push(i); 
    sensorDataArray.push(obj[i]); 
} 
0

的不同的语法(更优雅IMO):

var sensorNameArray = Object.keys(obj) 
var sensorDataArray = Object.values(obj) 

or : 

var sensorDataArray = sensorNameArray.map(key => obj[key]) 
0

您可以直接使用:Object.keyshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys)和Object.valueshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values)。

像这样:

var obj = {19455746: 7476, 22489710: 473}; 

var sensorNameArray = Object.keys(obj); 

var sensorDataArray = Object.values(obj); 
+0

他当然可以,但是怎么样?这是一个暗示,而不是一个答案。 –

+1

谢谢,@JeremyThille! –

0

您使用方括号[] 不过的Array.push()是一个功能,所以使用圆括号代替

试试下面的代码

obj = {19455746: 7476, 22489710: 473}; 
    var sensorNameArray = []; 
    var sensorDataArray = []; 
    for(var i in obj) { 
     sensorNameArray.push(i); 
     sensorDataArray.push(obj[i]); 
    } 

这是工作和测试。

0

处理JSON的最佳方法是使用lodash或下划线。

_.key()和_.value是您的要求的函数。

例如:

obj = {19455746: 7476, 22489710: 473}; 

sensorNameArray = _.keys(obj); 
sensorDataArray = _.values(obj); 

如果你想在你的方式来进行,那么你可以使用括号,如JavaScript的推内置功能,插入元素到数组。

正确的是:

for(var i in obj) { 
    sensorNameArray.push(i); 
    sensorDataArray.push(obj[i]); 
} 
+0

这不是JSON –

+0

雅我只是建议其他方式,以访问对象,所以它可能在未来有所帮助。还指定了当前代码的更正。 –