【问题标题】:Reverse An object in javascript在javascript中反转一个对象
【发布时间】:2017-08-08 07:07:55
【问题描述】:

我想在 JavaScript 中反转一个对象。例如:

输入:obj ={'one': 1, 'two': 2, 'three':3 }

输出:obj ={'three': 3, 'two': 2, 'one':1 }

javascript 或者 lodash 有什么方法吗?

【问题讨论】:

  • 你不能。对象的键不应该是有序的。一些浏览器确实保留了插入顺序,但没有理由指望它。你用这个干什么?
  • 您的用例是什么?我们或许可以为您推荐一些东西。
  • 正如安德鲁指出的那样,您所说的顺序不存在。你可以做什么并且可能意味着对象被序列化(到Json)或打印出来的方式。例如,您可以覆盖对象的 .toString() 函数,以便按顺序打印出其属性。
  • 如果您的对象键是1/2/3 并且值是one/two/three,那么您可以像var obj ={3:'three', 2:'two', 1:'one' } console.log(Object.keys(obj)); 那样在asc 中对其进行排序,尽管这不是您的要求。

标签: javascript object lodash


【解决方案1】:

这就是你要找的,

function dict_reverse(obj) {
  new_obj= {}
  rev_obj = Object.keys(obj).reverse();
  rev_obj.forEach(function(i) { 
    new_obj[i] = obj[i];
  })
  return new_obj;
}


my_dict = {'one': 1, 'two': 2, 'three':3 }
rev = dict_reverse(my_dict)
console.log(rev)

【讨论】:

    【解决方案2】:

    你需要这样的东西吗?

    let obj ={'one': 1, 'two': 2, 'three':3 };
    let result = {}, stack = [];
    for(property in obj){
    	stack.push({'property' : property, 'value' : obj[property]})
    }
    for(let i=stack.length-1;i>=0;i--){
    	result[stack[i].property] = stack[i].value; 
    }
    console.log(result);

    【讨论】:

      【解决方案3】:

      同意其他人,不保证对象中键的顺序。但是如果你对它没问题并且你相信它的插入顺序,你可以通过这个函数交换它们:

      reverseObj = (obj) =>{
          return Object.keys(obj).reverse().reduce((a,key,i)=>{
              a[key] = obj[key];
              return a;
          }, {})
      };
      const result = reverseObj({a: 'aaa', b:'bbb', c: 'ccc'})
      console.log(result)

      【讨论】:

        猜你喜欢
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 2023-01-08
        • 1970-01-01
        相关资源
        最近更新 更多