JavaScript - 根据值对键值对对象进行排序?

javascriptweb developmentfront end technology

通过使用 JavaScript 的原生数组方法和函数,我们可以轻松创建适用于任何类型对象的自定义排序算法。在本文中,我们将讨论如何使用这些技术按值对对象的键值对进行排序。

JavaScript 中的键值对(如映射、字典)存储一个值("键")与另一个值("值")相关联。它可用于快速存储和访问数据,因为每个元素都有自己唯一的标识符。

对于基于值的键值对对象进行排序,我们在 JavaScript 中使用 sort() 方法。

在 JavaScript 中使用 sort()

JavaScript 中的 sort() 方法用于对数组的元素进行就地排序并返回排序后的数组。默认排序顺序为升序。

语法

以下是 sort() 的语法>

array.sort(compareFunction)

示例

在下面的示例中,我们首先将内容存储为对象 array,然后执行常规 sort() 方法,然后执行 sort() 方法

<!DOCTYPE html>
<html>
<body>
   <script>
      var obj = {
         "1": "Apple",
         "2": "Yatch",
         "3": "Ducati",
         "4": "Benz",
      };
      var arr = [];
      for (var key in obj) {
         if (obj.hasOwnProperty(key)) {
            arr.push(obj[key]);
         }
      }
      document.write(arr.sort());
   </script>
</body>
</html>

脚本执行时,将生成一个输出,该输出由一个对象数组组成,这些对象根据执行脚本时触发的事件按升序打印。

示例

考虑到该示例,我们使用 Object.keys(obj) 访问数组中的对象键,然后根据其中存在的每个 item.value 的长度对该 array 对象进行排序。

<!DOCTYPE html>
<html>
<body>
   <p id="tutorial"></p>
   <script>
      const obj = {
         "1": [11, 234, 343],
         "2": [3],
         "3": [123, 245],
         "4": [1111, 2222, 3333, 4444]
      };
      const array = Object.keys(obj).reduce((array, key) => {
         array.push({ key: key, value: obj[key] });
         return array;
      }, [])
      const sortedArray = array.sort((x, y) => x.value.length - y.value.length);
      document.getElementById("tutorial").innerHTML=JSON.stringify(sortedArray);
   </script>
</body>
</html>

运行上述脚本时,Web 浏览器会在网页上显示按长度升序排序的 数组,这是由执行时触发的事件引起的。

示例

请考虑以下示例,我们正在执行脚本以根据值对键值对对象进行排序。

<!DOCTYPE html>
<html>
<body>
   <script>
      var myObj = {
         'U': 'avatar',
         'J': 'bheem',
         'M': 'tilak'
      },
      keys = [],
      k, i, len;
      for (k in myObj) {
         if (myObj.hasOwnProperty(k)) {
            keys.push(k);
         }
      }
      keys.sort();
      len = keys.length;
      for (i = 0; i < len; i++) {
         k = keys[i];
         document.write(k + ':' + myObj[k]+"<br>");
      }
   </script>
</body>
</html>

当脚本执行时,事件被触发,使得数组对象在网络浏览器上根据其键值对按升序排序。

示例

执行以下代码,根据键值对对象进行排序。

<!DOCTYPE html>
<html>
<body>
   <p id="tutorial"></p>
   <script>
      var details = [
         { studentId: 100, name: "John" },
         { studentId: 110, name: "Adam" },
         { studentId: 120, name: "Carol" },
         { studentId: 130, name: "Bob" },
         { studentId: 140, name: "David" }
      ];
      details = details.sort(function (obj1, obj2) {
         return obj1.name.localeCompare(obj2.name);
      });
      document.getElementById("tutorial").innerHTML=JSON.stringify(details);
   </script>
</body>
</html>

运行上述脚本时,将触发事件,并根据网页上的字母顺序对给定的数组对象进行升序排序。


相关文章