【发布时间】:2021-08-15 21:26:10
【问题描述】:
我正在尝试将项目从一个数组“求和”到另一个数组,同时保留它们的子数组(子数组):
array1 = [ array2 = [ array3 = [
[ [ [
"A", "1", "A",
"B", "2", "B",
[ [ "1",
"C" + "3" = "2",
] ] [
], ], "C",
"D" "4" "3"
] ] ]
],
"D",
"4"
]
编辑:理想情况下,最长的数组将被视为“主”数组(其值将位于最短数组之前)。 如果数组的元素个数相同,则第一个数组为主。
["a", ["b", "c"], "d"]
+
["x", ["v", "w"], "y"]
=
["a" "x", ["b", "c", "v", "w"], "d", "y"]
["a", "b", ["c", "d", ["e", "f"]]]
+
[["1", ["2"]]]
=
["a", "b", ["c", "d", "1", ["e", "f", "2"]]]
这可能吗?到目前为止,我发现的唯一建议与 .concat() 的使用有关,但是它将一个数组连接到另一个数组的末尾,并且不会合并两者:
var array1 = [["A", "B", ["C"]], "D"];
var array2 = [["1", "2", ["3"]], "4"];
console.log(array1.concat(array2)) // returns [["A", "B", ["C"]], "D", ["1", "2", ["3"]], "4"]
编辑 2: 我现在一直在以不同的方式思考这个问题,并意识到一个简单的可视化方法是这样的:
target = [
"A",
"B",
[
"C",
"D",
[
"E"
],
"J"
]
]
我想在“E”之后添加以下元素:
newelement = [
[
[
"F",
[
"G",
"H",
"I"
]
]
]
]
结果是:
result = [
"A",
"B",
[
"C",
"D",
[
"E",
"F",
[
"G",
"H",
"I"
]
],
"J"
]
]
基本上就是这样,将一个数组与另一个数组合并。
【问题讨论】:
-
你保证有相同数量的元素吗?或者它们可以不同吗?
-
@VLAZ 他们可以区分,理想情况下最长的数组将被视为“主”数组。
-
您需要阐明用于合并它们的规则。例如,为什么“1”在“B”之后、“D”之前和“C”之前?
-
好的,如果在同一个索引上一个数组有一个数组,另一个数组是一个普通值,例如,
["a", ["b", "c"], "d"]` 结合["x", "y", "z"],会发生什么? -
@Janilson 是的,我认为整数/字符串优先于数组,最长的数组优先于最短的数组。这种情况下的优先级是指先添加。
标签: javascript arrays object merge