Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并包含相同值的数组_Javascript_Arrays - Fatal编程技术网

Javascript 合并包含相同值的数组

Javascript 合并包含相同值的数组,javascript,arrays,Javascript,Arrays,我有一个数组: var arrays = [ [1, 2], [7, 5], [4, 6], [7, 8], [2, 3], [9, 10] ]; 必须合并至少包含一个相等值的数组(不管它们是否以重复值结束),其他数组应保持原样。 在本例中,结果应为: var result = [ [1, 2, 2, 3], [4, 6], [7, 5, 7, 8], [9, 10] ]; 这是一个使用Array.prot

我有一个数组:

var arrays = [
    [1, 2], 
    [7, 5],
    [4, 6], 
    [7, 8], 
    [2, 3],
    [9, 10]
];
必须合并至少包含一个相等值的数组(不管它们是否以重复值结束),其他数组应保持原样。 在本例中,结果应为:

var result = [
    [1, 2, 2, 3],
    [4, 6],
    [7, 5, 7, 8],
    [9, 10]
];

这是一个使用
Array.prototype.reduce
的解决方案,该解决方案的数组顺序与示例略有不同(我不知道示例答案为什么会改变原始数组的顺序)

var数组=[
[1, 2],
[7, 5],
[4, 6],
[7, 8],
[2, 3],
[9, 10]
];
const newArray=arrays.reduce((acc,cur)=>{
const arr=acc.find(a=>cur.some(b=>a.includes(b));
如果(arr){
arr.push(…cur);
}否则{
acc.push(当前);
}
返回acc;
}, []);

log(newArray)创建临时数据集(临时数组)并运行比较可能有助于实现所需的解决方案

以下是可以工作的循环构造:

var arrays = [[1, 2], [7, 5], [4, 6], [6, 7], [7, 8], [2, 3], [9, 10]]

// Create a temporary copy of input data
var tempArrays = arrays.slice()

// Remove the first element from temporary set.
tempArrays.shift()

// Check every element in each sub-array of main data set

arrays.forEach(subArray => {
   subArray.forEach(element => {
     tempArrays.forEach(tempSubArray => {         
         if(tempSubArray.includes(element)) {
             // Call the function to merge subArray and tempSubArray
         }         
     })
   })
})

请详细说明一下好吗?比如说,
[[1,2],[2,3],[3,4]]
,是否应该将所有三个数组合并为一个?另外,到目前为止,你尝试了什么?你坚持的是什么?为什么?这些数字代表什么?这个问题最有效的解决方法是。有许多现有的javascript实现。是的,
[[1,2],[2,3],[3,4]
应该变成
[[1,2,2,3,3,4]
[[1,2,3,4]
。我尝试了很多,结合了几个嵌套的“for”循环。代码变得非常丑陋和庞大,所以我没有把它包括在我的问题中。基本上,在上面的示例中,数组
[1,2]
[2,3]
不会合并。非常感谢您的回复!不幸的是,您的解决方案不适用于以下示例:
var数组=[[1,2]、[7,5]、[4,6]、[7,8]、[6,7]、[2,3]、[9,10]
与原始示例相比,我添加了数组
[6,7]
,结果应该是
[[1,2,2,3],[7,5,6,7,7,7,8,4,6],[9,10]
,但结果是“[[1,2,2,3],[7,5,6,7,8],[4,6],[9,10]
。数组
[4,6]`产生一个单独的数组,但由于数字6,它应该与
[7,5,6,7,7,8]
合并。