我有一个值对象,我正在尝试使用对象中的键和值填充两个数组。
我的对象:
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];
答案 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]);
}