Javascript 向上移动对象对象中的键(交换索引)

Javascript 向上移动对象对象中的键(交换索引),javascript,object,ecmascript-6,key,Javascript,Object,Ecmascript 6,Key,我正在处理一个对象的对象。我需要将它作为一个对象,因为我使用的API要求我保持这种方式(这一部分是没有争议的) 这是我的对象的一个示例架构: const obj = { 1: { name: 'Initial Step 1', stepNumber: 1 }, 2: { name: 'Initial Step 2', stepNumber: 2 }, 3: { name: 'Initial Step 3', stepNumber: 3 }, } 我需要实现一个moveUp函数,该函

我正在处理一个对象的对象。我需要将它作为一个对象,因为我使用的API要求我保持这种方式(这一部分是没有争议的)

这是我的对象的一个示例架构:

const obj = {
  1: { name: 'Initial Step 1', stepNumber: 1 },
  2: { name: 'Initial Step 2', stepNumber: 2 },
  3: { name: 'Initial Step 3', stepNumber: 3 },
}
我需要实现一个
moveUp
函数,该函数将
stepNumber
obj
分别作为第一个和第二个参数

moveUp
函数基本上需要将一个内部对象与其上方的对象交换。例如,
moveUp(2,obj)
应将
obj
更改如下:

{
  1: { name: 'Initial Step 2', stepNumber: 1 },
  2: { name: 'Initial Step 1', stepNumber: 2 },
  3: { name: 'Initial Step 3', stepNumber: 3 },
}
由于我构建的界面,
stepNumber
永远不会等于
1

我应该如何实现我的
moveUp
功能

我基本上需要这个:

export const moveUp = (stepNumber, obj) => {
    // I need help here
};
谢谢

您可以选择并调整
步数

函数向上移动(对象、键){
[object[key],object[key-1]=[object[key-1],object[key]];
对象[键]。步骤号++;
对象[key-1]。步骤号--;
}
var object={1:{name:'初始步骤1',步骤编号:1},2:{name:'初始步骤2',步骤编号:2},3:{name:'初始步骤3',步骤编号:3};
向上移动(对象,2);
console.log(对象)
.as控制台包装{max height:100%!重要;top:0;}
试试这个

let _ = require('lodash');
obj = {
    1: { name: 'Initial Step 1', stepNumber: 1 },
    2: { name: 'Initial Step 2', stepNumber: 2 },
    3: { name: 'Initial Step 3', stepNumber: 3 },
  }

function moveUp(sn, objToUp){
    console.log(objToUp);
    let key =  _.findKey(obj,{stepNumber: sn} );
    let keys = Object.keys(obj);
    let keyIndex = _.indexOf(keys, key);
    if(keyIndex > 0){
        let tmp = obj[keys[keyIndex-1]];
        obj[keys[keyIndex-1]] = objToUp;
        obj[keys[keyIndex]] = tmp;
    }
    console.log(obj);
}
moveUp(2, obj['2']);

巴里如果你依赖这里的订单,你会遇到问题的。对象键没有保持一致的顺序。对此进行了一些讨论。是否应将“初始步骤2”的步骤号设置为2?@Callam此代码段应该做什么/显示什么?O.O相关函数为空…@espresso_coffee我指出的输入和输出正是我想要的。@Beau我不依赖顺序,我在创建它。