对象删除和返回属性

时间:2018-03-30 03:23:55

标签: javascript javascript-objects

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中是否有任何方法可以在一个函数中执行它。

2 个答案:

答案 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 };

如果你想让它更易于维护,你应该将单行内容分成多个语句。