Javascript 包含用于数组的数组的函数
我有一个数组Javascript 包含用于数组的数组的函数,javascript,arrays,Javascript,Arrays,我有一个数组 m = [[-100,100], [-100,-100], [-100,-100], [-100,100]] 我想删除重复的。我试过了 aa = [...new Set(m)]; // and let chkdup = (arr, tar) => tar.every(v => arr.includes(v))`. 但是我不能删除重复的 在Python中,我可以很容易地在m中检查这个[-100100]。但是我不知道JS中的函数包含不适用于这种情况。新设置的无
m = [[-100,100], [-100,-100], [-100,-100], [-100,100]]
我想删除重复的。我试过了
aa = [...new Set(m)];
// and
let chkdup = (arr, tar) => tar.every(v => arr.includes(v))`.
但是我不能删除重复的
在Python中,我可以很容易地在m中检查这个
[-100100]。但是我不知道JS中的函数<代码>包含不适用于这种情况。新设置的无法正常工作的原因是在JavaScript中,具有相同值的数组不相等。试试:console.log([-100100]=[-100100])代码>将返回false。如果您只是想在阵列之间进行比较,请参阅
解决方法是将子阵列转换为字符串,并使用Set
进行重复数据消除:
const arr=[
[-100, 100],
[-100, -100],
[-100, -100],
[-100, 100]
];
const setArray=new Set(arr.map(x=>JSON.stringify(x));
const result=[…setArray].map(x=>JSON.parse(x));
控制台日志(结果)代码>新集合之所以不能很好地工作,是因为在JavaScript中,具有相同值的数组不相等。试试:console.log([-100100]=[-100100])代码>将返回false。如果您只是想在阵列之间进行比较,请参阅
解决方法是将子阵列转换为字符串,并使用Set
进行重复数据消除:
const arr=[
[-100, 100],
[-100, -100],
[-100, -100],
[-100, 100]
];
const setArray=new Set(arr.map(x=>JSON.stringify(x));
const result=[…setArray].map(x=>JSON.parse(x));
控制台日志(结果)代码>发生这种情况是因为[-100100]!=[-100100]
。您可以做的是将数组转换为字符串,并将字符串与JSON.stringify
进行比较
let m = [[-100,100], [-100,-100], [-100,-100], [-100,100]]
m = m.map(item => JSON.stringify(item).trim()) // Stringify everything (remove leading white space)
m = [...new Set(m)] // Convert to array getting rid of duplicates
m = m.map(item => JSON.parse(item)) // Parse it
请注意,这不是很有效(解释器必须转换为字符串并再次解析对象),但它是最简单的解决方案。它所做的是检查由两个对象组成的JSON
字符串是否相等,并且不会与您自己的类一起工作。发生这种情况是因为[-100100]!=[-100100]
。您可以做的是将数组转换为字符串,并将字符串与JSON.stringify
进行比较
let m = [[-100,100], [-100,-100], [-100,-100], [-100,100]]
m = m.map(item => JSON.stringify(item).trim()) // Stringify everything (remove leading white space)
m = [...new Set(m)] // Convert to array getting rid of duplicates
m = m.map(item => JSON.parse(item)) // Parse it
请注意,这不是很有效(解释器必须转换为字符串并再次解析对象),但它是最简单的解决方案。它所做的是检查由两个对象组成的JSON
字符串是否相等,并且不适用于您自己的类。您只需使用javascriptSet,map执行此操作,然后解析值。更多信息
m=[-100100]、-100、-100、-100、-100、-100100];
result=Array.from(新集合(m.map(JSON.stringify)),JSON.parse);
控制台日志(t)代码>您可以简单地使用javascriptSet,map执行此操作,然后解析值。更多信息
m=[-100100]、-100、-100、-100、-100、-100100];
result=Array.from(新集合(m.map(JSON.stringify)),JSON.parse);
控制台日志(t)
您可以使用.map()
和JSON.stringify()
对数组进行字符串化,并将其输入到集合中。由于您现在有一个字符串数组,集合将删除重复项,因为它可以正确检查相等性。然后可以使用Array.from
和JSON.parse的映射函数将其转换回数组:
const m=[[-100100]、-100、-100、-100、-100、-100100];
const res=Array.from(新集合(m.map(JSON.stringify)),JSON.parse);
控制台日志(res)
您可以使用.map()
和JSON.stringify()
对数组进行字符串化,并将其输入到集合中。由于您现在有一个字符串数组,集合将删除重复项,因为它可以正确检查相等性。然后可以使用Array.from
和JSON.parse的映射函数将其转换回数组:
const m=[[-100100]、-100、-100、-100、-100、-100100];
const res=Array.from(新集合(m.map(JSON.stringify)),JSON.parse);
控制台日志(res)代码>