限制数组项[重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我有一个名为list_of_songs的字符串数组。这个数组有时可能是20,有时是1.数字是不可预测的。

我正在尝试,只使用其中的4项 - 如果它有超过4个元素。如果没有,那么使用其余的。

我的代码:

let prefix = list_of_songs.prefix(upTo: 4)
var result = [String]()
for i in prefix {
        result.append(i)
}

结果:

有4个或更多元素。作品|有1或2个元素:

致命错误:数组索引超出范围

swift
2个回答
3
投票

只需使用没有参数标签的prefix

let result = list_of_songs.prefix(4)

不同之处在于,对于prefix(upTo:),参数必须在数组中指定有效索引,而对于prefix(:),您需要指定要检索的元素数 - 它记录为

如果最大长度超过集合中的元素数,则结果将包含集合中的所有元素。


1
投票

你可以实现如下,

let result = Array(list_of_songs.prefix(4))

要么

var result = [String]()
for (index, song) in list_of_songs.enumerated() {
    if index > 3 { break }
    result.append(song)
}
print(result)

要么

你可以删除不需要的Array元素,如下所示,

if list_of_songs.count > 4 {
    list_of_songs.removeSubrange(4...)
}
print(list_of_songs) 
© www.soinside.com 2019 - 2024. All rights reserved.