Javascript 将数组中的特定对象值合并到分离的数组中

Javascript 将数组中的特定对象值合并到分离的数组中,javascript,Javascript,我有这么多人 personsList = [ {cities: ['A', 'B', 'C']}, {cities: ['A', 'B', 'C']}, {cities: ['A', 'B', 'C']}, {cities: ['A', 'B', 'C', 'D']} ] 在里面的每个对象中,除了城市之外还有更多的细节,但我想用里面的所有城市制作一个数组-唯一。因此,结果将是 ['A','B','C','D'] 我试着做一些类似的事情 const allCities = per

我有这么多人

personsList = [
  {cities: ['A', 'B', 'C']},
  {cities: ['A', 'B', 'C']},
  {cities: ['A', 'B', 'C']},
  {cities: ['A', 'B', 'C', 'D']}
]
在里面的每个对象中,除了
城市
之外还有更多的细节,但我想用里面的所有城市制作一个数组-唯一。因此,结果将是
['A','B','C','D']

我试着做一些类似的事情

const allCities = personsList.map(p => p.cities)

但是我得到了一个数组,对于这个数组,最好的方法是什么?谢谢。

您可以使用

var personsList=[
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C','D']}
]
//城市将拥有所有具有副本的城市
const allCities=personsList.reduce((a,c)=>[…a,…c.cities]);
//从阵列创建集合-删除重复项,然后从集合中重新创建阵列

console.log(Array.from)(新集合(allCities))您可以使用

var personsList=[
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C','D']}
]
//城市将拥有所有具有副本的城市
const allCities=personsList.reduce((a,c)=>[…a,…c.cities]);
//从阵列创建集合-删除重复项,然后从集合中重新创建阵列
console.log(Array.from)(新集合(allCities))您可以直接使用获取唯一值

var personlist=[{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C','D']},
unique=Array.from(
减少(
(s,{cities}=>cities.reduce((t,c)=>t.add(c,s),
新集
)
);
console.log(唯一)您可以直接使用获取唯一值

var personlist=[{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C','D']},
unique=Array.from(
减少(
(s,{cities}=>cities.reduce((t,c)=>t.add(c,s),
新集
)
);
console.log(唯一)
您可以
数组#映射所有城市,然后将它们合并为一个数组。然后使用
Set
可以获得唯一的城市

const personlist=[{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C','D']},
uniqueCity=Array.from(新集合([].concat(…personsList.map(({cities}=>cities)));
控制台日志(唯一性)
您可以
数组#映射所有城市,然后将它们合并为一个数组。然后使用
Set
可以获得唯一的城市

const personlist=[{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C']},{城市:['A','B','C','D']},
uniqueCity=Array.from(新集合([].concat(…personsList.map(({cities}=>cities)));

控制台日志(唯一性)我认为这就是您正在寻找的效果,通过使用set,您可以保证只有唯一的元素

let personsList=[
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C','D']}
]
const allCities=personsList.reduce((acc,e)=>{
e、 城市地图(x=>{
附件增补(x)
})
返回acc
},新集合())

console.log(Array.from(allCities))
我想这就是您想要的效果,通过使用set,您可以保证只有唯一的元素

let personsList=[
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C','D']}
]
const allCities=personsList.reduce((acc,e)=>{
e、 城市地图(x=>{
附件增补(x)
})
返回acc
},新集合())
console.log(Array.from(allCities))
const personsList=[
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C','D']}
];
constAllCities=[…新集合([].concat(…personsList.map(({cities}=>cities)))];
控制台日志(所有城市)
const personsList=[
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C']},
{城市:['A','B','C','D']}
];
constAllCities=[…新集合([].concat(…personsList.map(({cities}=>cities)))];

控制台日志(所有城市)
p.cities也是数组内部映射函数,然后使用filterp.cities也是数组内部映射函数,然后使用filter
var
在技术上不受欢迎,但我肯定认为在所有现代JavaScript中都应该避免它
var
在技术上不受欢迎,但我绝对认为在所有现代Javascript中都应该避免这种情况。谢谢@Hassan的回复,我如何在每个城市上运行
trim()
?然后您可以使用
array\map
<代码>uniqueCity.map(city=>city.trim())
但是我会在最后的ArrayTanks中在
A
A
之间有重复,对于回复@Hassan,我如何在每个城市上运行
trim()
?然后你可以使用
array#map
<代码>uniqueCity.map(city=>city.trim())
但是在最后一个数组中,我将在
A
A
之间有一个副本