当前位置: 首页 > 知识库问答 >
问题:

将特定类型的对象数组获取到新数组[重复]

尉迟晔
2023-03-14

我有我的目标:

struct Person {
    var name = ""
    var age = 0
}

我已将一些人添加到数组中:

let p1 = Person(name: "Tony", age: 10)
let p2 = Person(name: "Lisa", age: 20)
let p3 = Person(name: "Anna", age: 30)
let p4 = Person(name: "Morgan", age: 40)
let p5 = Person(name: "Jane", age: 50)

let persons = [p1, p2, p3, p4, p5]

我想要所有的名字在一个单独的数组,但我不想这样做nameArray.append(p1.name)...还有别的办法吗?

共有2个答案

戚承业
2023-03-14
匿名用户

使用map功能:

let names = persons.map { $0.name }

这可能看起来像魔法,所以让我们扩展一下,看看到底发生了什么:

let names = persons.map ({
    person in
    return person.name
})

这里发生的是map将“转换”应用于数组中的每个Person。您可以通过向map函数传递闭包来指定要执行的转换。这里你说“当你给我一个人的时候,我还给你这个人的名字”。看到这里的转变了吗?我们把一个人变成了一个名字<代码>映射自动将其应用于数组中的每个项,并将所有转换结果附加到新数组中。

姬朗
2023-03-14

您可以简单地映射名称:

let names = persons.map({ $0.name }) // ["Tony", "Lisa", "Anna", "Morgan", "Jane"] 

 类似资料:
  • 我有这个初始数组,希望根据和提取重复航班 我写了这个,但我只能得到第一个重复的,看起来不是很漂亮。 有什么建议吗?

  • 我在开快车。js应用程序,有几个API将数据提供给下拉框。返回的数据格式为: 其中key是我的选项key,value是显示文本。这个数组的结构是固定的,我知道一个事实,我总是将key和value作为数组中每个对象的字段。 当我尝试验证提交的表单(额外的服务器端验证)时,我想交叉引用为字段提供的值与数组中“key”的所有值(blah、foo、bar、baz)。鉴于这将是一个经常使用的路由,我想避免每

  • 为什么我不能得到数组中给定对象的索引? 期望的结果显然是2…

  • 我有一个数据就像 我想使用ES6高阶函数获得每个对象的名称,而不使用for或foreach。 我尝试过和但不知道何时使用什么

  • 问题内容: 我有一个JSON文件,其中包含一些我想在AngularJS网站上访问的数据。现在,我要从数组中仅获取一个对象。因此,我想例如ID为1的商品。 数据如下所示: 我想使用AngularJS $ http功能加载数据,如下所示: 这正在工作。但是,现在如何从获取的数组中获取特定的数据对象(按ID)呢? 在此先感谢您的帮助。 马克·马克 问题答案: 唯一的方法就是遍历数组。显然,如果您确定结果

  • 问题内容: 我想以jQuery或纯JavaScript的形式获取JavaScript对象的键作为数组。 有没有比这更详细的方法? 问题答案: 用途: 这是ES5的功能。这意味着它可以在所有现代浏览器中使用,但不能在旧版浏览器中使用。 ES5-shim有一个实现可以偷