Javascript 如何访问嵌入在json对象中的数组。调用时对象的属性未定义
我试图映射属性“fiveDays”,但当我调用它时,控制台返回 TypeError:data.fiveDays未定义 据我所知,调用属性的标准方式通常是Javascript 如何访问嵌入在json对象中的数组。调用时对象的属性未定义,javascript,ecmascript-6,handlebars.js,Javascript,Ecmascript 6,Handlebars.js,我试图映射属性“fiveDays”,但当我调用它时,控制台返回 TypeError:data.fiveDays未定义 据我所知,调用属性的标准方式通常是data.FiveDays 对象的示例: { "symbol": "ACB", "price": "0.7001", "date": "2020-03-12", "fiveDays": [ [ "2020-03-12", { "1. open": "0.6801",
data.FiveDays
对象的示例:
{
"symbol": "ACB",
"price": "0.7001",
"date": "2020-03-12",
"fiveDays": [
[
"2020-03-12",
{
"1. open": "0.6801",
"2. high": "0.7400",
"3. low": "0.6300",
"4. close": "0.7001",
"5. volume": "41546525"
}
],
[
"2020-03-11",
{
"1. open": "0.9620",
"2. high": "0.9820",
"3. low": "0.8500",
"4. close": "0.8587",
"5. volume": "21826334"
}
],
[
"2020-03-10",
{
"1. open": "1.0300",
"2. high": "1.0700",
"3. low": "0.9600",
"4. close": "0.9802",
"5. volume": "22182204"
}
],
[
"2020-03-09",
{
"1. open": "0.9601",
"2. high": "1.0900",
"3. low": "0.9000",
"4. close": "0.9490",
"5. volume": "27748756"
}
],
[
"2020-03-06",
{
"1. open": "1.2800",
"2. high": "1.2900",
"3. low": "1.1300",
"4. close": "1.1700",
"5. volume": "24907729"
}
]
]
}
我在main.js中使用的方法接收HTML元素和使用Stocks类创建的对象。在这里,我尝试调用data.fiveDays
,让它在数组元素上迭代,并将它们映射到一个新对象,该对象将使用手柄模板显示
方法:
const displayHistoricalData = (el, data) => {
// modify data to contain an array of day objects
let fiveDays = data.fiveDays.map(day => {
let {'1. open': open, '2. high': high, '3. low': low, '4. close': close} = day[1];
return {open, high, low, close, date: day[0]};
});
el.innerHTML = Handlebars.templates['stock-history']({history: fiveDays});
};
数据来自侦听单击事件的文档.queryselector
语句
document
.querySelector('.stock-display')
.addEventListener('click', (evt) => {
if (evt.target && evt.target.matches('button.btn-history')) {
let symbolInput = document.querySelector('#symbol').value;
displayHistoricalData(document.querySelector('.day-details'), new Stocks({symbol: symbolInput}));
evt.preventDefault();
}
});
正如您在这里看到的,getHistoricalData
中的“数据”来自Stocks
类
问题是如何访问对象内部的数组,以便对其进行分解 如何获取
数据以及在何处调用displayHistroicalData
?displayHistoricalData如下所示:``document.querySelector('.stock display').addEventListener('click',(evt)=>{if(evt.target&&evt.target.matches('button.btn history')){let symbolInput=document.querySelector('#symbol').value;displayHistoricalData(document.querySelector('.day details')、新股({symbol:symbolInput}));evt.preventDefault();}});``和“数据”是从Stocks类传递的。您是否对数据进行了控制台并查看了?也许这有帮助:@sathish1409是的,我进行了。在控制台I中,调用对象的属性没有问题。当它保存在main.js中时,我尝试控制台.log()它会说,对象无法定义。我还应该提到,我正在使用node.js传输代码,不确定这是否有区别。