Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 用ramda合并三个数组_Javascript_Arrays_Object_Ramda.js - Fatal编程技术网

Javascript 用ramda合并三个数组

Javascript 用ramda合并三个数组,javascript,arrays,object,ramda.js,Javascript,Arrays,Object,Ramda.js,我最近开始使用Ramda处理来自JSONAPI的响应,我在处理复杂的关系时遇到了一些困难。。我有一个大数组和三个小数组,我需要合并三个小数组,但是每个数组都有不同的属性。我需要一个具有这三个不同属性的数组 例如: const bigArray = [[...], [...], [...]] arrayOne = [ { id = 1, attributes = {...}, specialProperty1 = {...} }, { id =

我最近开始使用Ramda处理来自JSONAPI的响应,我在处理复杂的关系时遇到了一些困难。。我有一个大数组和三个小数组,我需要合并三个小数组,但是每个数组都有不同的属性。我需要一个具有这三个不同属性的数组

例如:

const bigArray = [[...], [...], [...]] 

arrayOne = [
  { 
    id = 1,
    attributes = {...},
    specialProperty1 = {...}
  },
  { 
    id = 2,
    attributes = {...},
    specialProperty1 = {...}
  }
]

arrayTwo = [
  { 
    id = 1,
    attributes = {...},
    specialProperty2 = {...}
  },
  { 
    id = 2,
    attributes = {...},
    specialProperty2 = {...}
  }
]

arrayThree = [
  { 
    id = 1,
    attributes = {...},
    specialProperty3 = {...}
  },
  { 
    id = 2,
    attributes = {...},
    specialProperty3 = {...}
  }
]
相同的id代表同一个人。i、 e.arrayOne中的id 1与arrayTwo中的id 1引用的是同一个人。因此,属性也是相同的。这三个数组之间的唯一区别是特殊属性。我需要合并每个特殊属性的整个对象,以便所有三个特殊属性都位于具有相应id的对象中

像这样:

const newArray = [
  { 
    id = 1,
    attributes = {...},
    specialProperty1 = {...},
    specialProperty2 = {...},
    specialProperty3 = {...}
  },
  { 
    id = 2,
    attributes = {...},
    specialProperty1 = {...},
    specialProperty2 = {...},
    specialProperty3 = {...}
  },
]

另外,这是在一个promise.All中返回的,因此需要注意的是,三个较小的数组都在一个大数组中。我认为这是最让我困惑的地方,我很难弄清楚使用哪种Ramda方法来引用大数组中的三个数组

一种方法是通过每个数组的
id
属性进行索引,然后通过匹配的
id
及其内容合并每个对应的数组元素。然后最后提取外部索引对象的值

const
arrayOne=[
{ 
id:1,
属性:{},
特殊属性1:{}
},
{ 
id:2,
属性:{},
特殊属性1:{}
}
],
阵列双=[
{ 
id:1,
属性:{},
特殊属性2:{}
},
{ 
id:2,
属性:{},
特殊属性2:{}
}
],
阵列树=[
{ 
id:1,
属性:{},
特殊属性3:{}
},
{ 
id:2,
属性:{},
特殊属性3:{}
}
],
fn=R.管(
R.map(R.indexBy(R.prop('id')),
R.reduce(R.mergeWith(R.merge),{}),
R.价值观
),
newArray=fn([arrayOne,arrayTwo,ArrayTree])
console.log(newArray)
1)通过id 3)join4)展平大阵列2)组。。。。5) 利润