将数组推入另一个数组

时间:2016-11-18 16:14:14

标签: javascript arrays

我有以下数组。

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方法时生成的

5 个答案:

答案 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

我希望这会有所帮助