JS中有没有快速删除并返回对象属性的方法?
const objectA = { a: 1, b: 2 };
const b = object.doSomething("b");
const objectB = { b };
objectA is now { a: 1 }
objectB is { b: 2 }
我知道我可以分配属性然后删除它,但我想知道JS中是否有任何方法可以在一个函数中执行它。
答案 0 :(得分:0)
此操作没有快捷方式。你需要手动完成;这是一种方式:
function doSomething(source, ...keys) {
var result = keys.reduce((r, k) => {
r[k] = source[k];
delete source[k];
return r;
}, {});
return result;
}
var obj1 = {
a: 1,
b: 2
};
var obj2 = doSomething(obj1, 'b');
console.log(obj1, obj2);

答案 1 :(得分:0)
回答你的问题:不,没有单一的功能可以完成所有这些。
但你可以这样做:
const objectB = {};
const k = 'b';
let t;
objectB[k] = t = objectA[k] && delete objectA[k] && t;
你可以把它包装成这样的函数:
function deleteReturn(object, key) {
let temp;
return (temp = object[key]) && delete object[key] && temp;
}
const b = deleteReturn(objectA, 'b');
const objectB = { b };
如果你想让它更易于维护,你应该将单行内容分成多个语句。