Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách lấy sự khác biệt giữa hai mảng trong JavaScript

Viết hàm tìm phần tử chỉ có trong một trong hai mảng (symmetric difference). Dùng indexOf hoặc includes (hiện đại hơn).

Ví dụ

<html>
  <head>
    <title>Hiệu hai mảng trong JavaScript</title>
  </head>
  <body>
    <script>
      function arrDifference(arr1, arr2) {
        var result = [];
        // Phần tử có trong arr1 nhưng không có trong arr2
        for (var i = 0; i < arr1.length; i++) {
          if (arr2.indexOf(arr1[i]) === -1) result.push(arr1[i]);
        }
        // Phần tử có trong arr2 nhưng không có trong arr1
        for (var i = 0; i < arr2.length; i++) {
          if (arr1.indexOf(arr2[i]) === -1) result.push(arr2[i]);
        }
        return result.sort((a,b) => a - b);
      }
      document.write(arrDifference([50, 40, 90], [70, 50, 99, 40, 90]));
    </script>
  </body>
</html>

Kết quả

70,99

Cách hiện đại (ES6): [...new Set([...arr1.filter(x => !arr2.includes(x)), ...arr2.filter(x => !arr1.includes(x))])].sort((a,b)=>a-b)