gpt4 book ai didi

ios - 如何根据另一个数组元素更新数组的所有对象

转载 作者:行者123 更新时间:2023-11-28 14:00:57 25 4
gpt4 key购买 nike

假设我有两个对象类型相同的数组,现在我想根据另一个数组的某个键更新第一个数组的所有元素。 如果 myArray id 与 testArray id 匹配,我想将 isSelected 更新为 true。我可以使用 for 循环遍历 myArray 并检查在 testArray 中找到的每个 id,并且可以更新基于该索引的 isSelected 值。但我想知道我是否可以为这个用例使用像 containsfilter 这样的高阶函数。

class MyObject
{
var id: Int
var isSelected:Bool?
var value: String
}

var myArray = [{id: 1, isSelected: nil, value: abcd}, {id: 2,
isSelected: nil, value: xyz}, {id: 3, isSelected: nil, value: hghghg} ]

var testArray = [{id: 1, isSelected: nil, value: abcd}, {id: 2,
isSelected: nil, value: xyz}]

let resultArray = [{id: 1, isSelected: true, value: abcd}, {id: 2,
isSelected: true, value: xyz}, {id: 3, isSelected: nil, value: hghghg}]

最佳答案

你可以试试

let testArrIds = testArray.map { $0.id }
myArray.forEach { $0.isSelected = testArrIds.contains($0.id) ? true : $0.isSelected }

它可以是 1 行,但我不想在 forEach 的每个循环中映射 id,因为它会很昂贵

myArray.forEach { $0.isSelected =  testArray.map { $0.id }.contains($0.id) ? true : $0.isSelected  }

关于ios - 如何根据另一个数组元素更新数组的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com