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

Swift数组同步问题求助:保留原顺序同步两个数组

Swift数组同步:保留原有元素位置的实现方案

要实现保留array2原有元素位置的同步需求(删除array2中array1不存在的元素,将array1独有的元素追加到array2末尾),可以通过以下步骤完成,避开difference(from:)打乱顺序的问题:

实现思路

  1. 过滤array2,仅保留同时存在于array1的元素,确保原有顺序不变;
  2. 提取array1中未出现在过滤后array2里的元素,按array1的顺序取出;
  3. 将提取的元素追加到过滤后的array2末尾,得到最终同步结果。

示例代码

let array1 = ["01", "06", "17", "22", "33", "45", "04"]
var array2 = ["04", "17", "22", "10", "01", "34"]

// 用Set存储array1元素,提升查找效率
let array1Elements = Set(array1)

// 过滤array2:保留存在于array1的元素,维持原有顺序
let filteredExisting = array2.filter { array1Elements.contains($0) }

// 找出array1中不在过滤后array2里的元素,按array1顺序提取
let newElementsToAdd = array1.filter { !filteredExisting.contains($0) }

// 合并得到同步后的array2
array2 = filteredExisting + newElementsToAdd

// 输出结果:["04", "17", "22", "01", "06", "33", "45"]
print(array2)

说明

  • 使用Set存储array1元素是为了将元素查找的时间复杂度从O(n)降到O(1),提升处理效率,尤其当数组元素较多时效果明显;
  • 过滤操作严格保留array2中符合条件元素的原有顺序,再追加array1独有的元素,完全匹配需求中的同步规则。

内容的提问来源于stack exchange,提问作者J.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:25:23