我正在处理一个物体对象。我需要将它作为一个对象保留,因为我使用的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
};
谢谢!
答案 0 :(得分:3)
您可以destructuring assignment并调整$sql = "insert into tbl_user (name, age, groupname)
values (?, ?, ?)";
$this-> db-> query($sql,array('codeigniter, 35, 'Group 1'));
。
stepNumber

function moveUp(object, key) {
[object[key], object[key - 1]] = [object[key - 1], object[key]];
object[key].stepNumber++;
object[key - 1].stepNumber--;
}
var object = { 1: { name: 'Initial Step 1', stepNumber: 1 }, 2: { name: 'Initial Step 2', stepNumber: 2 }, 3: { name: 'Initial Step 3', stepNumber: 3 } };
moveUp(object, 2);
console.log(object);

答案 1 :(得分: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']);