不附加到数组的JavaScript数据
我有一个值的对象,我试图用对象中的键和值填充两个数组。不附加到数组的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];
语法push[]
不调用函数,它试图访问函数对象的属性。它不会抛出错误,因为在Javascript中,函数是对象,并且此语法在技术上是有效的。
因此,只需修复语法为push()
以实际调用该函数。
推的是一个函数,而不是一个阵列,它使用括号没有括号:
for(var i in obj) {
sensorNameArray.push(i);
sensorDataArray.push(obj[i]);
}
的不同的语法(更优雅IMO):
var sensorNameArray = Object.keys(obj)
var sensorDataArray = Object.values(obj)
or :
var sensorDataArray = sensorNameArray.map(key => obj[key])
您可以直接使用:Object.keys
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys)和Object.values
(https://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);
他当然可以,但是怎么样?这是一个暗示,而不是一个答案。 –
谢谢,@JeremyThille! –
您使用方括号[] 不过的Array.push()是一个功能,所以使用圆括号代替
试试下面的代码
obj = {19455746: 7476, 22489710: 473};
var sensorNameArray = [];
var sensorDataArray = [];
for(var i in obj) {
sensorNameArray.push(i);
sensorDataArray.push(obj[i]);
}
这是工作和测试。
处理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]);
}
这不是JSON –
雅我只是建议其他方式,以访问对象,所以它可能在未来有所帮助。还指定了当前代码的更正。 –
你的语法不正确,应该是'推()','不按[]' –
哈哈,谢谢,不知道我怎么没发现这一点。现在都在工作。 – Colin747
@MikaelLennholm如果你想添加评论作为答案,我会接受。 – Colin747