如何获取对象数组中键的值?
How to get the value of the keys in an array of objects?
我有一个结构如下的对象数组:
import icon1 from '!!raw-loader!../../../icon1.svg';
import icon2 from '!!raw-loader!../../../icon2.svg';
import icon3 from '!!raw-loader!../../../icon3.svg';
import icon4 from '!!raw-loader!../../../icon4.svg';
import icon5 from '!!raw-loader!../../../icon5.svg';
export const CustomIcons = [
{
home: 'icon1',
homeIcon: (icon)
},
{
series: 'icon2',
seriesIcon: (icon2)
},
{
explorer: 'icon3',
explorerIcon: (icon3)
},
...
];
在我的模块的构造函数中,我想使用这样的值:
export class IconRegistryModule {
constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {
CustomIcons.forEach(icon => {
iconRegistry.addSvgIconLiteral(Object.keys(icon)[0], sanitizer.bypassSecurityTrustHtml(Object.keys(icon)[1]));
});
}
}
因此 forEarch 的第一个 运行 的 addSvgIconLiteral 方法应该如下所示:
iconRegistry.addSvgIconLiteral('the value of the key home', sanitizer.bypassSecurityTrustHtml('the value of the key homeIcon');
使用Object.keys获取每个对象的值
var keys = Object.keys(CustomIcons[i])
然后用for循环遍历数组中的每个元素。
您可以将这些元素中的每一个附加到每个元素末尾的单独 'key array'
循环。
Object.keys(icon)[0]
只是给你钥匙。您可以使用键作为图标对象的索引。
您可以 icon[Object.keys(icon)[0]]
获取值。
(当然,您需要确保第一个 属性 始终是持有 url 的那个。从这个意义上说,将结构基于一个接口可能会更好与评论中建议的一致命名。)
编辑:
使用接口应该看起来像这样:
export interface CustomIcon {
name: string;
icon: string;
}
export const CustomIcons: CustomIcon[] = [
{
name: 'icon1',
icon: (icon1)
},
{
name: 'icon2',
icon: (icon2)
},
...
]
然后在构造函数中(Object.keys 不再需要):
constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {
CustomIcons.forEach(icon => {
iconRegistry.addSvgIconLiteral(icon.name, sanitizer.bypassSecurityTrustHtml(icon.icon));
});
}
使用它来获取数组中的对象键。
CustomIcons.map((data) => {
console.log(Object.keys(data));
});
我有一个结构如下的对象数组:
import icon1 from '!!raw-loader!../../../icon1.svg';
import icon2 from '!!raw-loader!../../../icon2.svg';
import icon3 from '!!raw-loader!../../../icon3.svg';
import icon4 from '!!raw-loader!../../../icon4.svg';
import icon5 from '!!raw-loader!../../../icon5.svg';
export const CustomIcons = [
{
home: 'icon1',
homeIcon: (icon)
},
{
series: 'icon2',
seriesIcon: (icon2)
},
{
explorer: 'icon3',
explorerIcon: (icon3)
},
...
];
在我的模块的构造函数中,我想使用这样的值:
export class IconRegistryModule {
constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {
CustomIcons.forEach(icon => {
iconRegistry.addSvgIconLiteral(Object.keys(icon)[0], sanitizer.bypassSecurityTrustHtml(Object.keys(icon)[1]));
});
}
}
因此 forEarch 的第一个 运行 的 addSvgIconLiteral 方法应该如下所示:
iconRegistry.addSvgIconLiteral('the value of the key home', sanitizer.bypassSecurityTrustHtml('the value of the key homeIcon');
使用Object.keys获取每个对象的值
var keys = Object.keys(CustomIcons[i])
然后用for循环遍历数组中的每个元素。
您可以将这些元素中的每一个附加到每个元素末尾的单独 'key array' 循环。
Object.keys(icon)[0]
只是给你钥匙。您可以使用键作为图标对象的索引。
您可以 icon[Object.keys(icon)[0]]
获取值。
(当然,您需要确保第一个 属性 始终是持有 url 的那个。从这个意义上说,将结构基于一个接口可能会更好与评论中建议的一致命名。)
编辑:
使用接口应该看起来像这样:
export interface CustomIcon {
name: string;
icon: string;
}
export const CustomIcons: CustomIcon[] = [
{
name: 'icon1',
icon: (icon1)
},
{
name: 'icon2',
icon: (icon2)
},
...
]
然后在构造函数中(Object.keys 不再需要):
constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {
CustomIcons.forEach(icon => {
iconRegistry.addSvgIconLiteral(icon.name, sanitizer.bypassSecurityTrustHtml(icon.icon));
});
}
使用它来获取数组中的对象键。
CustomIcons.map((data) => {
console.log(Object.keys(data));
});