让数组对象按照指定的顺序输出

实现一个方法fun(tt,arr),让数组对象arr,按照指定的顺序tt输出;

   let tt={
        city:"城市",
        age:"年龄",
        name:"名字"
    }


    let arr=[
        {
            name: "xiaoming",
            age: 15,
            city:"sz"
        },
        {
            name: "xiaoming",
            age: 16,
            city:"sz"
        }
    ]

最后要得到的结果:

   let arr2=[
        {
            city:"sz",
             age: 15,
            name: "xiaoming",
           
        },
         {
            city:"sz",
             age: 16,
            name: "xiaoming",
           
        }
    ]

阅读 5.1k
6 个回答

2018年9月11日11:35:10 这真的是最后一版改回答的。
大体上还是最初的回答。只不过是找了一些资料。
对象是无序的,各个浏览器的顺序不一样。想用有序的换数组

SF搜索关于 遍历对象顺序
Javascript 对象那些事(持续更新)
SJ9011: Chrome Opera 中 for-in 语句遍历出对象属性的顺序与定义的不同


测试用例出了问题了【人工尴尬脸】。改成乱序出来还是有序的。。。字母的好像没变,我再去查查资料

clipboard.png


2018年9月11日11:09:36

嗯,看到了评论。想起了一个东西。浏览器到底是什么序列。。。容我去测试一番。
chrome是插入顺序,所以可以根据tt构造一个有序队列,然后根据这个有序队列。重新渲染对象。
FF是插入顺序

obj={0:0,1:1,2:2}
obj[3] = 3
obj[4] = 4
obj[5] = 5
obj[13] = 13
obj[14] = 14
obj[15] = 15
obj[113] = 113
obj[114] = 114
obj[115] = 115
obj[143] = 113
obj[144] = 114
obj[145] = 115
obj['a'] = 1
obj['b'] = 1
obj['c'] = 1
obj['a3'] = 1
obj['b3'] = 1
obj['c3'] = 1
obj['a1'] = 1
obj['b1'] = 1
obj['c1'] = 1

Object.keys(obj)
for(var i in obj) console.log(i)
JSON.stringify(obj)
JSON.parse(JSON.stringify(obj))

原答案
话说对象这个本来就是一个固定的排序吧。你可以理解为无序列表。

有序的话用数组。

clipboard.png

这个没什么意义吧。对象的键是不存在序列关系的

object本来就是无序的啊,直接用key取值不就行了吗

(function(sort) {
  let arr = [
    {
      job: '程序猿',
      name: 'xiaoming',
      age: 15,
      sex: 1,
      city: 'sz',
    },
    {
      job: '产品经理',
      name: 'xiaoming',
      age: 16,
      sex: 0,
      city: 'sz',
    },
  ];
  let newArr = arr.map(item => {
    let newItem = {};
    for (let key in sort) {
      newItem[key] = item[key];
    }
    Object.assign(newItem, item);
    return newItem;
  });
  console.info(newArr);
})({
  city: '城市',
  name: '名字',
  age: '年龄',
});

不存在的。
不同浏览器对对象属性的排序不一样,一般的都是按照ASC码的顺序,早期浏览器也可能是按照属性插入的顺序。

你的tt是普通对象,javascript中对象理论上没有稳定的顺序。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题