Arrays 使用条件遍历数组以创建新数组
如何遍历数组并分配其Arrays 使用条件遍历数组以创建新数组,arrays,scala,for-loop,Arrays,Scala,For Loop,如何遍历数组并分配其val? 我尝试了以下两种方法,但都不起作用: var a : Array[String] = Array("foo","bar") var b : Array[String] = Array() for (i <- 0 to (a.length-1)) { println(a(i)) b :+ a(i) } var a:Array[String]=Array(“foo”、“bar”) 变量b:Array[String]=Array() 对于(i您可以
val
?
我尝试了以下两种方法,但都不起作用:
var a : Array[String] = Array("foo","bar")
var b : Array[String] = Array()
for (i <- 0 to (a.length-1)) {
println(a(i))
b :+ a(i)
}
var a:Array[String]=Array(“foo”、“bar”)
变量b:Array[String]=Array()
对于(i您可以使用数组
根据条件进行过滤
以元素长度为条件尝试此示例
val a : Array[String] = Array("foo","bars")
val b = a.filter(el => el.length > 3)
注意:最好使用val
以避免可变性。您可以使用数组
根据条件进行过滤
以元素长度为条件尝试此示例
val a : Array[String] = Array("foo","bars")
val b = a.filter(el => el.length > 3)
注意:最好使用val
以避免易变性。让标准库为您进行复制
val a : Array[String] = Array("foo","bar")
val b : Array[String] = a.clone()
代码无法工作的原因是,:+
不是赋值运算符。此语句,例如,Array():+“str”
不会修改数组
,它会使用修改后的值创建一个新的数组
。不幸的是,您的代码没有将该新的数组
分配给新的或现有的变量,因此修改将丢失
你可以这样做
for (element <- a){
b = b :+ element
}
让标准库为您进行复制
val a : Array[String] = Array("foo","bar")
val b : Array[String] = a.clone()
代码无法工作的原因是,:+
不是赋值运算符。此语句,例如,Array():+“str”
不会修改数组
,它会使用修改后的值创建一个新的数组
。不幸的是,您的代码没有将该新的数组
分配给新的或现有的变量,因此修改将丢失
你可以这样做
for (element <- a){
b = b :+ element
}
尝试b=b++element,可惜它不起作用。尝试b=b++element,可惜它不起作用。谢谢你的回答。这是有意义的。实际上我不想克隆它,但在以后应用一些案例来消除数组的一些值。因此,我使用这个for循环。或者你能建议用什么更好的方式来做呢?所以b
应该是a
的副本,但删除了一些值?如果是这种情况,那么按照Jyothi Babu Araja的建议,使用filter
(或者filterNot
,取决于要测试的条件)。这意味着我每个步骤都有一个单独的过滤器?比如val b=a.filter(el=>el.startsWith(“f”)).filter(el=>el.startsWith(“ba”))
?显然不是。任何元素都不会以“f”和“ba”开头。请参阅我的更新。感谢您的回答。这很有意义。实际上我不想克隆它,但在以后应用一些案例来消除数组的某些值。因此我将此用于循环。或者您可以建议如何更好地执行此操作?因此b
应该是a
的副本,但删除了一些值?如果是这样的话案例然后按照Jyothi Babu Araja的建议,使用过滤器(或过滤器不,取决于待测试的条件)。这意味着我每个步骤都有一个单独的过滤器?比如val b=a.filter(el=>el.startsWith(“f”)。filter(el=>el.startsWith(“ba”))
??显然不是。没有任何元素将以“f”和“ba”开头。请参阅我的更新。