const a = { "3": "three", "foo": "bar" } const { [3]: omit, ...rest } = a; assert.deepEqual(rest, {"foo": "bar"}); assert.equal(omit, "three"); const [k1, k2, k3, k4, k5] = [null, undefined, true, false, {toString() { return "warrior"; }}]; const c = { [k1]: "1", [k2]: "2", [k3]: "3", [k4]: "4", [k5]: "5" }; const { [k1]: v1, [k2]: v2, [k3]: v3, [k4]: v4, [k5]: v5, ...vrest } = c; assert.equal(v1, "1"); assert.equal(v2, "2"); assert.equal(v3, "3"); assert.equal(v4, "4"); assert.equal(v5, "5"); assert.deepEqual(vrest, {}); // shouldn't convert symbols to strings const sx = Symbol(); const sy = Symbol(); const d = { [sx]: "sx", [sy]: "sy" } const { [sx]: dx, [sy]: dy } = d; assert.equal(dx, "sx"); assert.equal(dy, "sy");