栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在保持键查找的同时保持Javascript对象/数组有序?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在保持键查找的同时保持Javascript对象/数组有序?

我也遇到了这个问题。解决方案是除了原始对象之外,还保留键的有序数组。

var objects = {  "7": {"id":"7","name":"Hello"},  "3": {"id":"3","name":"World"},  ...}var order = [ "3", "7", ... ];

现在,如果要第二个元素,可以执行以下查找:

var second_object = objects[order[1]];

ECMA标准未提及对象中元素的顺序。尤其是Chrome浏览器在它们 看起来像 数字时会重新排序。例:

var example = {    "a": "a",    "b": "b",    "1": "1",    "2": "2"};

如果您在Chrome浏览器中进行打印,则会得到以下内容:

{    1: "1",    2: "2",    "a": "a",    "b": "b"};

有点酸..但是生活。

您也可以使用与Andy链接的解决方案,基本上将这两个对象包装在一个对象中。

我经常使用的替代方法是自定义地图函数,该函数可让您指定对象的遍历顺序。通常,在将数据打印给用户时,您将进行排序,因此在循环和创建表行(例如)时,迭代器将按排序函数指定的顺序传递行。我认为这是个好主意:)

签名看起来像:

function map(object, callback, sort_function);

用法示例:

map(object, function (row) {   table.add_row(row.header, row.value);}, function (key1, key2) {   return object[key1] - object[key2];});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号