我有以下数组。
var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=[];
我如何将arr1和arr2推入arr3,结果是:
arr3=[[1,2,3],[4,5,6]];
不是
arr3=[1,2,3,4,5,6];
使用.concat
方法时生成的。
答案 0 :(得分:5)
/* Input, can be read from file easily by splitting on ", " */
val lines = List(List("i1", "i2", "i5"),
List("i3", "i4"),
List("i2", "i6", "i7"),
List("i4", "i8"),
List("i9", "i3"))
/* finds all sequential pairs */
val pairs = lines.flatMap(x => x.dropRight(1).zip(x.drop(1)))
/* create an empty adjacency map: id -> (Set of adjacent vertices) */
val defMap = Map[String, Set[String]]().withDefaultValue(Set[String]())
/* populate the default map with the actual (symmetric) adjacencies */
val adjMap = pairs.foldLeft{defMap}(
(acc, x) => acc + (x._1 -> (acc(x._1) + x._2)) + (x._2 -> (acc(x._2) + x._1)))
/* BFS algo on map representation of graph */
def mapBFS(adjMap: Map[String, Set[String]]): List[List[String]] =
{
val v = adjMap.keys
var globalVisits = List[String]()
def BFS_r(elems: List[String], visited: List[List[String]]): List[String] =
{
val newNeighbors = elems.flatMap(adjMap(_)).filterNot(visited.flatten.contains).distinct
if (newNeighbors.isEmpty)
visited.flatten
else
BFS_r(newNeighbors, newNeighbors :: visited)
}
v.flatMap(x =>{
if (globalVisits.contains(x))
None
else
{
val vi: List[String] = BFS_r(List(x), List(List(x)))
globalVisits = globalVisits ++ vi
Some(vi)
}
}).toList
}
mapBFS(adjMap).foreach{println}

答案 1 :(得分:1)
var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3 = [arr1,arr2];
console.log(arr3);
答案 2 :(得分:0)
arr3.push(arr1);
arr3.push(arr2);
将完成这项工作。 无论如何,只需按http://www.w3schools.com/jsref/jsref_push.asp进一步澄清。 希望这会有所帮助。
答案 3 :(得分:0)
您可以像使用其他答案一样使用push()
:
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [arr1, arr2];
console.log(arr3);
答案 4 :(得分:0)
正如其他用户发布的那样,问题的解决方案是使用.push()方法,但我会尝试为您提供有关这两种方法的更多信息。
我建议你阅读article,对我来说非常有用;我在下面回顾一下你的主要信息。
PUSH METHOD
如果要将一个或多个元素(即输入参数)添加到调用该方法的数组中,则使用Push方法。
一个简单的例子如下:
var first_array = [1, 2, 3];
var result = first_array.push(4, 5, 6);
console.log(result); // 6
console.log(first_array ); // [1, 2, 3, 4, 5, 6]
有一点不是立即显而易见的是它在添加新值后返回数组的长度,而不是修改后的数组。 (检查第三行:console.log(result);
)
CONCAT METHOD
当push改变调用它的数组时, concat 返回一个新数组,原始数组与作为参数提供的数组/ s或value / s连接。
关于 concat 以及如何创建返回的数组,有几点需要注意。
字符串和数字都被复制到数组中,这意味着如果原始值发生更改,新数组中的值将不受影响。
对象不是这样。
而不是将对象复制到新数组中,而是复制引用。这意味着如果对象的值在一个数组中更改,它们也将在另一个数组中更改,因为它们是对象的引用而不是唯一副本。
一个简单的例子如下:
var test = [1, 2, 3]; // [1, 2, 3]
var example = [{ test: 'test value'}, 'a', 'b', 4, 5];
var concatExample = test.concat(example); // [1, 2, 3, { test: 'test value'}, 'a', 'b', 4, 5]
example[0].test = 'a changed value';
console.log(concatExample[3].test); // Object { test: "a changed value"}
example[1] = 'dog';
console.log(concatExample[4]); // 'a'
我已使用此示例为您创建了fiddle。
我希望这会有所帮助