当前位置: 代码网 > it编程>编程语言>Javascript > JS中给数组去重的方法小结

JS中给数组去重的方法小结

2024年09月08日 Javascript 我要评论
基本思路:首先肯定毫无疑问地想到使用set对数组进行去重,但是试过之后会发现单纯地使用set无法达到预期结果,因为数组里面的元素又是数组,而set在进行去重时,并不会将[1,2]元素和[1,2]元素判

基本思路:

  • 首先肯定毫无疑问地想到使用set对数组进行去重,但是试过之后会发现单纯地使用set无法达到预期结果,因为数组里面的元素又是数组,而set在进行去重时,并不会将[1,2]元素[1,2]元素判断为相等,因为他们并不是同一个数组,只是数组里面存放的元素一样。
  • 那么我们自然而然想到,我们需要想办法让set认为[1,2]元素[1,2]元素相等。我刚开始想到的是使用数组的join(',')方法将数组变成字符串,例如[1,2].join(',')变成'1,2',去重之后再将set里面的元素变成数组,例如'1,2'.split(',')变成['1','2']。但是这样会有一个问题,最后得到的是['1','2'],而我们想要的是[1,2],所以这种方式达不到预期。
    此方式的完整代码如下:
let arr = [
  [1, 2],
  [3, 4],
  [1, 2],
  [5, 6],
  [3, 4],
  [11, 13],
  [11, 12],
  [11, 13],
];

let temp = arr.map((item) => {
  return item.join(",");
});
console.log(temp);  // ['1,2','3,4','1,2','5,6','3,4','11,13','11,12','11,13']

let set = new set(temp);
console.log(set);  // set { '1,2', '3,4', '5,6', '11,13', '11,12' }

let res = [...set].map((item) => {
  return item.split(",");
});
console.log(res);
/*
[
  [ '1', '2' ],
  [ '3', '4' ],
  [ '5', '6' ],
  [ '11', '13' ],
  [ '11', '12' ]
]
*/

  • 最后,我们找到一种方式达到预期效果。使用json.stringify()json.parse()
    代码如下:
let arr = [
  [1, 2],
  [3, 4],
  [1, 2],
  [5, 6],
  [3, 4],
  [11, 13],
  [11, 12],
  [11, 13],
];

let temp = arr.map((item) => {
  return json.stringify(item);
});
console.log(temp);
/*
[
  '[1,2]',   '[3,4]',
  '[1,2]',   '[5,6]',
  '[3,4]',   '[11,13]',
  '[11,12]', '[11,13]'
]
*/

let set = new set(temp);
console.log(set);
// set { '[1,2]', '[3,4]', '[5,6]', '[11,13]', '[11,12]' }

let result = array.from(set);
console.log(result);
// [ '[1,2]', '[3,4]', '[5,6]', '[11,13]', '[11,12]' ]

result = result.map((item) => {
  return json.parse(item);
});
console.log(result);
// [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 11, 13 ], [ 11, 12 ] ]

相关知识点:

1. json.stringify()

json.stringify() 方法将一个 javascript 对象或值转换为 json 字符串。

使用 json.stringify() 示例:

json.stringify({}); // '{}'
json.stringify(true); // 'true'
json.stringify("foo"); // '"foo"'
json.stringify([1, "false", false]); // '[1,"false",false]'
json.stringify({ x: 5 }); // '{"x":5}'

2. json.parse()

json.parse() 方法用来解析 json 字符串,构造由字符串描述的 javascript 值或对象。

使用 json.parse() 示例:

json.parse("{}"); // {}
json.parse("true"); // true
json.parse('"foo"'); // "foo"
json.parse('[1, 5, "false"]'); // [1, 5, "false"]
json.parse("null"); // null

3. set与数组之间相互转换

set转换成数组有两种方式:
① [...set]② array.from(set)

数组转换成set:new set(arr)

// set转换成数组
let set = new set();
set.add(1);
set.add(2);
set.add(2);
let arr = [...set];  // [1,2]
let arr2 = array.from(set);  // [1,2]
// 数组转换成set
let arr = [1,2,2,3,1];
let set = new set(arr);  // set { 1, 2, 3 }

以上就是js中给数组去重的方法小结的详细内容,更多关于js数组去重的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com