Javascript 向上移动对象对象中的键(交换索引)
我正在处理一个对象的对象。我需要将它作为一个对象,因为我使用的API要求我保持这种方式(这一部分是没有争议的) 这是我的对象的一个示例架构: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函数,该函
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我不依赖顺序,我在创建它。