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>
运行上述脚本后,事件被触发,并在网页上根据字母顺序按升序对给定的数组对象进行排序。
广告