Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 - Fatal编程技术网

Javascript 无法在多维数组上应用扩展运算符

Javascript 无法在多维数组上应用扩展运算符,javascript,Javascript,我有一个多维数组,我想对其应用spread操作符以获得一个没有重复值的数组。以下是多维数组: colorArray = [ ['Bead Link Layered Anklet', 'Gold, Hematite'], ['Bead Link Layered Anklet', 'Gold, Multi, Neutral'], ['Bead Link Layered Anklet', 'Gold, Multi, Neon'], ['Bead Link Layered Anklet', 'Gold,

我有一个多维数组,我想对其应用spread操作符以获得一个没有重复值的数组。以下是多维数组:

colorArray = [
['Bead Link Layered Anklet', 'Gold, Hematite'],
['Bead Link Layered Anklet', 'Gold, Multi, Neutral'],
['Bead Link Layered Anklet', 'Gold, Multi, Neon'],
['Bead Link Layered Anklet', 'Gold, Multi, Neon'],
['Colorful Beaded Anklet', 'Fuchsia, Gold'],
['Colorful Beaded Anklet', 'Yellow'],
['Rhinestone Pave Chain Layered Anklets','Gold Theme']
]
当我通过应用push操作符展平数组时,它不再是多维数组,它看起来是这样的:

colorArray = 
[
  'Bead Link Layered Anklet',
  'Gold, Hematite',
  'Bead Link Layered Anklet',
  'Gold, Multi, Neutral',
  'Bead Link Layered Anklet',
  'Gold, Multi, Neon',
  'Bead Link Layered Anklet',
  'Gold, Multi, Neon',
  'Colorful Beaded Anklet',
  'Fuchsia, Gold',
  'Colorful Beaded Anklet',
  'Yellow',
  'Rhinestone Pave Chain Layered Anklets',
  'Gold Theme '
]
['Bead Link Layered Anklet', ['Gold, Hematite', 'Gold, Multi, Neutral', 'Gold, Multi, Neon'],
['Colorful Beaded Anklet', ['Fuchsia, Gold', 'Yellow'],
['Rhinestone Pave Chain Layered Anklets','Gold Theme']
我的问题是,如果数组是平面的,我只能应用扩展操作符,但我想保留结构,所以我不想将其展平。这是我将扩展运算符应用于平面阵列时得到的结果:

unique = 
[
  'Bead Link Layered Anklet',
  'Cream, Gold',
  'Gold, Hematite',
  'Gold, Multi, Neutral',
  'Gold, Multi, Neon',
  'Colorful Beaded Anklet',
  'Fuchsia, Gold',
  'Yellow',
  'Rhinestone Pave Chain Layered Anklets',
  'Gold Theme'
]
我希望结果如下所示:

colorArray = 
[
  'Bead Link Layered Anklet',
  'Gold, Hematite',
  'Bead Link Layered Anklet',
  'Gold, Multi, Neutral',
  'Bead Link Layered Anklet',
  'Gold, Multi, Neon',
  'Bead Link Layered Anklet',
  'Gold, Multi, Neon',
  'Colorful Beaded Anklet',
  'Fuchsia, Gold',
  'Colorful Beaded Anklet',
  'Yellow',
  'Rhinestone Pave Chain Layered Anklets',
  'Gold Theme '
]
['Bead Link Layered Anklet', ['Gold, Hematite', 'Gold, Multi, Neutral', 'Gold, Multi, Neon'],
['Colorful Beaded Anklet', ['Fuchsia, Gold', 'Yellow'],
['Rhinestone Pave Chain Layered Anklets','Gold Theme']
这就是我用来消除重复项的方法:

唯一=[…新的SetcolorArray]

基于:

var colorArray=[ ['珠链分层脚镯','黄金,赤铁矿', ['珠链分层脚镯','金,多,中性', [“珠链分层脚镯”,“金色,多功能,霓虹灯], [“珠链分层脚镯”,“金色,多功能,霓虹灯], [“彩色串珠脚镯”,“紫红色,金色”], [“彩色串珠脚镯”,“黄色”], [“莱茵石铺装链分层脚镯”,“金色主题”] ]; 让result=[…Object.values colorArray.ReduceAc,el=>{ var key=el[0], 值=el[1]; acc[键]=acc[键]|{ 钥匙 值:[] }; if!acc[key].values.includeValue acc[key].values.pushvalue; 返回acc; },{}.mapel=>[el.key,el.values]];
console.logresult;是否要按第一个元素对数组进行分组?创建一个对象,其键为第一个元素,值为第二个元素的数组。然后把这个数组转换回二维数组。我不认为用这样简单的一行程序就可以做到这一点。你需要写一个循环,根据关键元素对事物进行分组。更正:我希望结果如下:['Bead Link Layered Anklet',['Gold,Hemate',['Gold,Multi,Neutral','Gold,Multi,Neon']],['Color Bead Anklet',['Fuchsia,Gold','Yellow']],['Rhinestone Pave Chain Layered Anklet',['Gold Theme']StackOverflow不是免费的编码服务。你应该会的。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。欲知更多信息,请看,并采取:这是很难找到,但我终于找到了它。