Я хочу построить таблицу в Raect с отсортированным списком часов определенного списка Ebay. Я понял, что проблема в этой строке:
entriesObj[value][1][0].listingInfo[0].watchCount[0]
потому что иногда в листинге вообще нет наблюдателей, и в этом случае значение watchCount вообще не существует, поэтому я не могу пройти через него, хотя я пытался использовать условный оператор (и операторы if else во многих разных пути) все равно выдает ошибку. Сначала я создал объект:
watcherCount = () => {
return (
this.state.itemList.reduce((watcherObject,item) => {
const watcherKey = item.itemId;
if (!watcherObject[watcherKey]) {
watcherObject[watcherKey] = [item];
} else {
watcherObject[watcherKey].push(item);
}
return watcherObject;
},{})
);
}
и теперь я пытаюсь переместить их в массив ([количество часов, название списка, идентификатор элемента]), чтобы отсортировать их:
import React from 'react';
class Watches extends React.Component {
render () {
var entriesObj = Object.entries(this.props.watcherCount);
var sortable = [];
for (var value in entriesObj){
for (var value in entriesObj){
sortable.push([typeof entriesObj[value][1][0].listingInfo[0].watchCount[0] === "undefined" ? "-" : entriesObj[value][1][0].listingInfo[0].watchCount[0], entriesObj[value][1][0].title[0], entriesObj[value][0]]);
}
}
sortable.sort(function(a, b) {
return b[0] - a[0];
});
console.log(sortable);
//Output: Uncaught (in promise) TypeError: Cannot read property '0' of undefined
return <table></table>
}
}
export default Watches;
Знаете ли вы какой-либо другой способ построения такого точного вида массива или как решить проблему с отсутствующим свойством?