JavaScript数据未附加到数组

时间:2017-08-09 10:25:28

标签: javascript arrays object

我有一个值对象,我正在尝试使用对象中的键和值填充两个数组。

我的对象:

obj = {19455746: 7476, 22489710: 473}

循环尝试附加数据:

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

此时两个阵列打印为空。我的预期结果将是:

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

4 个答案:

答案 0 :(得分:2)

push是一个函数,而不是一个数组,它使用括号而不是括号:

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

答案 1 :(得分:0)

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

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

or :

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

答案 2 :(得分:0)

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

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

答案 3 :(得分: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]);
}