javascript去除数组中重复的对象
ssssss
代码如下:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> var a = [{ x: 10, y: 20, z: 30 }, { x: 10, y: 20, z: 30 }, { x: 50, y: 60, z: 60 }, { x: 10, y: 20, z: 30 }, { x: 20, y: 20, z: 30 }]; console.log(a); function unique(arr) { var res = [arr[0]]; for (var i = 0; i < arr.length; i++) { var repeat = false; for (let j = 0; j < res.length; j++) { if (isObjectValueEqual(arr[i], res[j])) { repeat = true; break; } } if (!repeat) { res.push(arr[i]); } } return res; } b = unique(a); console.log(b); var c = []; for (var i = 0; i < b.length; i++) { c.push(b[i].x); c.push(b[i].y); c.push(b[i].z); } console.log(c); //判断两对象是否相等 function isObjectValueEqual(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length != bProps.length) { return false; } for (var i = 0; i < aProps.length; i++) { var propName = aProps[i]; if (a[propName] !== b[propName]) { return false; } } return true; } </script> </body> </html>
结果
(5) [{…}, {…}, {…}, {…}, {…}] 0:{x: 10, y: 20, z: 30} 1:{x: 10, y: 20, z: 30} 2:{x: 50, y: 60, z: 60} 3:{x: 10, y: 20, z: 30} 4:{x: 20, y: 20, z: 30} (3) [{…}, {…}, {…}] 0: {x: 10, y: 20, z: 30} 1: {x: 50, y: 60, z: 60} 2: {x: 20, y: 20, z: 30} (9) [10, 20, 30, 50, 60, 60, 20, 20, 30]

浙公网安备 33010602011771号