你好,我正在尝试循环多个对象。
在我的解决方案中,我尝试用for(... in ...)
循环归档:
var signalData = {
signal1: {
name: "signal1",
data: [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 1, 2, 3, 5, 4, 1, 4, 2, 9, 7, 5, 7, 4, 6],
},
signal2: {
name: "signal2",
data: [6, 4, 8, 5, 4, 8, 4, 3, 5, 4, 5, 8, 7, 2, 9, 5, 4, 1, 2, 6, 0, 5, 7, 1],
},
signal3: {
name: "signal3",
data: [9, 5, 12, 3, 8, 4, 8, 6, 3, 4, 7, 8, 5, 2, 1, 8, 6, 8, 5, 8, 4, 8, 5, 1],
},
}
var output = [];
for (var signals in signalData) {
var dat = Object.keys(signalData[signals].data);
//console.log(dat);
dat.forEach((signal) => {
if (signal >= 3 && signal <= 7) {
output.push(signalData[signals].data(signal));
}
});
}
console.log(output)
console.log(dat);
给了我正确的数据,但在forEach
中,我在控制台中收到了这个错误:signalData[signals].data is not a function
我搞不清出了什么问题。也许有人已经解决了类似的问题,可以帮助我。谢谢。
在您的示例中,signal
是对象signalData[signals].data
的键。你用这条线把它称为一个函数
output.push(signalData[signals].data(signal));
相反,请尝试此操作,以便访问对象的属性。
output.push(signalData[signals].data[signal]);
您可以简单地使用基于索引的for
循环来遍历数组,而不是使用Object.keys
。
var signalData = {
signal1: {
name: "signal1",
data: [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 1, 2, 3, 5, 4, 1, 4, 2, 9, 7, 5, 7, 4, 6],
},
signal2: {
name: "signal2",
data: [6, 4, 8, 5, 4, 8, 4, 3, 5, 4, 5, 8, 7, 2, 9, 5, 4, 1, 2, 6, 0, 5, 7, 1],
},
signal3: {
name: "signal3",
data: [9, 5, 12, 3, 8, 4, 8, 6, 3, 4, 7, 8, 5, 2, 1, 8, 6, 8, 5, 8, 4, 8, 5, 1],
},
}
var output = [];
for (var signals in signalData) {
var dat = signalData[signals].data;
for(let i = 3; i < Math.min(dat.length, 8); i++){
output.push(dat[i]);
}
}
console.log(output)