JavaScript – 基于值排序键值对对象?


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

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

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

在 JavaScript 中使用 sort()

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

语法

以下是 `sort()` 的语法

array.sort(compareFunction)

示例

在下面的示例中,我们首先将内容存储为对象的数组,然后执行常规的 `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` 的长度对该对象数组进行排序。

<!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>

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

示例

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

<!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>

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

更新于:2023年1月18日

3K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告