3 回答
TA贡献1893条经验 获得超10个赞
...引用OP ...
...
<p>{leg.segments[0].arrivalCity.caption}</p>
或者...<p>{leg.segments[leg.segments.length - 1].arrivalCity.caption}</p>
误解可能是由于没有像数组一样对待legs
。因此,为了始终访问arrivalCity
每个segments
数组的最后一项,必须legs
首先迭代该数组。
使用OP的示例数据并实现一个基本的渲染函数,该函数首先迭代数组,并且仅在每次迭代时始终通过eglegs
访问当前数组的最后一项,正如OP已经正确完成的那样,除了预期的结果之外,什么都不会失败将呈现...segments
segmentList[segmentList.length - 1]
伦敦
莫斯科
... 例子 ...
function renderListOfLastArrivalCities(dataList) {
const listNode = document.querySelector('.last-arrivals');
dataList.forEach(({ segments: segmentList }) => {
//const lastSegmentItem = segmentList[segmentList.length - 1];
//const arrivalCity = lastSegmentItem && lastSegmentItem.arrivalCity;
const arrivalCity = segmentList[segmentList.length - 1]?.arrivalCity;
if (arrivalCity) {
const itemNode = document.createElement('li');
itemNode.textContent = arrivalCity.caption || '';
listNode.appendChild(itemNode);
}
})
}
const legs = [{
"segments": [{
"arrivalCity": {
"uid":"LED",
"caption":"ST PETERSBURG"
}
}, {
"arrivalCity": {
"uid":"LON",
"caption":"LONDON"
}
}]
}, {
"segments": [{
"arrivalCity": {
"uid":"MOW",
"caption":"MOSCOW"
}
}]
}];
renderListOfLastArrivalCities(legs);
<ul class="last-arrivals"></ul>
TA贡献1807条经验 获得超9个赞
它无法重现您的问题。请向我们展示您的阵列。
假设你的数组是,
var leg={segments:[{arrivalCity:{caption:"cap1"}}]};
然后如果你跑;
leg.segments[leg.segments.length - 1].arrivalCity.caption
您将看到预期输出为“cap1”
TA贡献1963条经验 获得超6个赞
看起来就像你leg.segments[leg.segments.length - 1]
的,我认为它是没有arrivalCity属性的对象。如果有,那么您一定是犯了任何拼写错误,或者您的数据形状可能不同。
您能否与我们分享您的阵列以供我们查看。
添加回答
举报