You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular TypeScript中如何提取数组对象的Name字段生成新数组?

问题:将包含国家信息的对象数组转换为仅含国家名称的数组

原始对象数组:

const countries = [
  {Name: 'AFGHANISTAN', ShortName: 'AFG'},
  {Name: 'ALAND ISLANDS', ShortName: 'ALD'},
  {Name: 'ALBANIA', ShortName: 'ALB'},
  {Name: 'ALGERIA', ShortName: 'DZA'},
  {Name: 'AMERICAN PACIFIC TERRITORIES', ShortName: 'UMI'},
  {Name: 'AMERICAN SAMOA', ShortName: 'ASM'},
  {Name: 'AMERICAN VIRGIN ISLANDS', ShortName: 'VIR'},
  {Name: 'ANDORRA', ShortName: 'AND'},
  {Name: 'ANGOLA', ShortName: 'AGO'},
  {Name: 'ANGUILLA', ShortName: 'AIA'},
  {Name: 'ANTARCTICA', ShortName: 'ATA'},
  {Name: 'ANTIGUA & BARBUDA', ShortName: 'ATG'}
];

期望输出(注:示例写法存在语法错误,实际可选择以下两种有效形式):

// 形式1:字符串数组
[
  'AFGHANISTAN',
  'ALAND ISLANDS',
  'ALBANIA',
  // ... 其余国家名称
]

// 形式2:仅含Name属性的对象数组
[
  {Name: 'AFGHANISTAN'},
  {Name: 'ALAND ISLANDS'},
  {Name: 'ALBANIA'},
  // ... 其余对象
]

你用filter方法不符合需求是因为filter仅用于筛选数组元素,不会修改元素结构。要实现元素转换,应该用map方法——它会遍历数组每个元素,返回你需要的新结构。


实现方式1:转换为字符串数组

直接提取每个对象的Name属性:

const countryNames: string[] = countries.map(country => country.Name);

实现方式2:转换为仅含Name属性的对象数组

保留对象结构,只保留Name字段:

// TypeScript可选:定义类型增强校验
type CountryName = { Name: string };
const countryNameObjects: CountryName[] = countries.map(country => ({ Name: country.Name }));

Angular组件中使用示例

在组件类中集成转换逻辑:

import { Component } from '@angular/core';

@Component({
  selector: 'app-country-converter',
  templateUrl: './country-converter.component.html'
})
export class CountryConverterComponent {
  // 原始国家数据
  private originalCountries = [
    {Name: 'AFGHANISTAN', ShortName: 'AFG'},
    {Name: 'ALAND ISLANDS', ShortName: 'ALD'},
    // ... 其余国家数据
  ];

  // 转换后的字符串数组
  countryNames: string[];
  // 转换后的对象数组
  countryNameObjects: { Name: string }[];

  constructor() {
    this.countryNames = this.originalCountries.map(c => c.Name);
    this.countryNameObjects = this.originalCountries.map(c => ({ Name: c.Name }));
  }
}

内容的提问来源于stack exchange,提问作者souli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:25:19