【发布时间】:2018-08-25 06:45:00
【问题描述】:
我有一个看起来像这样的对象数组。我使用 .groupBy 和 lodash 使它看起来像这样。
States.ts
STATES: Object[] = [
{
USA: [
{
name: 'Alabama',
abbreviation: 'AL',
country: 'USA'
},
{
name: 'Alaska',
abbreviation: 'AK',
country: 'USA'
}
]
},
{
Canada: [
{
name: 'Alberta',
abbreviation: 'ALB',
country: 'Canada'
}
]
}
];
我需要它看起来像这样:
stateList:StateDropdownItem[] =[
{
label: 'USA',
items: [
{label: 'AL', value: 'Alabama'},
{label: 'AK', value: 'Alaska'},
]
},
.
.
]
我已经尝试了下面的代码,但它不起作用。当我将它打印到控制台时出现undefiened,即使我尝试在没有forloop的情况下放置一个元素,我也会收到以下错误Cannot read property 'push' of undefined
TS
dropdownOfStates: StateDropdownItem[];
.
.
dropdownBuilder() {
const STATES_BY_COUNTRY = this.getStatesByCountry();
let tempItem;
for (let i = 0; i < STATES_BY_COUNTRY.length; i++) {
tempItem = STATES_BY_COUNTRY[i];
this.dropdownOfStates.push(
new StateDropdownItem('KEY COUNTRY VALUE HERE', [
tempItem.abbreviation,
tempItem.name
])
);
}
}
打印使用 .groupBy 和 lodash 的结果后的 Console.log groupby objects by country
【问题讨论】:
-
嗨,欢迎来到 StackOverflow。就目前而言,STATES 数组无效。它应该是一个对象数组吗?或具有值
USA、Canada等的单个对象 -
这是一个 State 类型模块的数组,我在一个名为 state.module.ts
export class State { abbreviation: string; name: string; country: string; constructor(abbreviation: string, name: string, country: string) { this.abbreviation = abbreviation; this.name = name; this.country = country; } }的文件中创建 -
好的,您能否编辑您的问题以便编译代码?谢谢
-
@user184994 完成
-
不,那仍然无法编译。您可以尝试在从 lodash 返回的对象上调用
JSON.stringify,这会有所帮助。
标签: javascript angular typescript lodash