Я ожидаю, что пустой объект не будет передан в данные моего графика.
Тогда не создавайте один с самого начала, это пустой, который у вас есть в ваших данных.
Вместо:
single: any = [
{
"name": [],
"value": []
}
];
просто:
single: any = [];
Примечание 1: Я бы вообще не использовал здесь push
, если только вы не хотите добавлять все больше и больше данных в this.single.
Если вы хотите заменять this.single
каждый раз, я использовал бы map
:
this.single = (barChart || []).map(({skill: {score: value, name}}) => ({name, value}));
// (And no `this.single = [...this.single];` afterward, it's not needed)
Примечание 2: поскольку это TypeScript, вы можете воспользоваться типом для этих данных:
interface ChartDataEntry {
name: string;
value: number; // If it's a number
}
затем
single: ChartDataEntry[] = [];
строка this.single = ...
не изменяется, TypeScript может определить тип записей, возвращаемых map
, и может видеть, что они действительны для этого интерфейса.
Или, если хотите, вместо объявления интерфейса вы можете просто объявить тип записей, встроенный в single
:
let single: {name: string, value: number}[] = [];
но наличие объявленного типа обычно полезно, потому что вы можете обнаружить, что хотите использовать его в другом месте того же кода.