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

如何借助整数数组对字符串数组排序?(含错误循环代码)

借助排序索引数组对目标数组排序的正确实现

嗨,我来帮你搞定这个排序问题!先看看你代码里的几个小问题:

  • 循环范围用了0...names.count,这会导致索引越界——Swift数组的有效索引是从0到count-1,当i等于names.count时,sorting[i]就会超出数组边界,程序直接崩溃。应该改成0..<names.count(左闭右开的范围,刚好覆盖所有有效索引)。
  • 你写的names[sorting]是错误的,应该用sorting[i]作为索引去取names里的元素,也就是names[sorting[i]]。
  • 没必要把元素转成字符串,names本身就是字符串数组,直接添加到sortedNames里就行。

修正后的for循环实现

var names = ["anna", "berta", "caesar", "dora"]
var sorting = [2, 0, 1, 3]
var sortedNames: [String] = []

for i in 0..<names.count {
    let element = names[sorting[i]]
    sortedNames.append(element)
}

print(sortedNames) // 输出: ["caesar", "anna", "berta", "dora"]

更简洁的Swift风格实现

其实在Swift里,我们可以用map方法一步到位,代码更简洁易读:

var names = ["anna", "berta", "caesar", "dora"]
var sorting = [2, 0, 1, 3]
let sortedNames = sorting.map { names[$0] }

print(sortedNames) // 输出: ["caesar", "anna", "berta", "dora"]

map会遍历sorting数组里的每一个索引值,用这个索引去names数组中取出对应的元素,最后自动生成排序后的新数组,完全不需要手动写循环和append。

内容的提问来源于stack exchange,提问作者M.Warner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:10