在数据和对象数组的合并中,如何使用对象分配而不是传播语法?

时间:2019-03-07 22:50:21

标签: javascript arrays object spread-syntax

我正在使用传播语法来获取当前对象。

const x = [{ port: 3000, typ: "port" }, { port: 4000, typ: "port" }];
const IDs = [3246237348, 738423894, 73824923]
const y = {
  ...x[0],
  CSSID
};

Object {port: 3000, typ: "port", CSSID: Array[3]}
  port: 3000
  typ: "port"
  CSSID: Array[3]
     0: 3246237348
     1: 738423894
     2: 73824923

但是我想使用对象分配而不是传播语法,这似乎很简单,但是我不知道如何获得结果:

const ob = Object.assign(Object.assign({}, x[0], Object.assign(CSSID)) );

Object {0: 3246237348, 1: 738423894, 2: 73824923, port: 3000, typ: "port"}
    0: 3246237348
    1: 738423894
    2: 73824923

1 个答案:

答案 0 :(得分:2)

Object.assign()将属性从一个或多个对象复制到单个目标对象。由于CSSID是一个数组,因此它将数组的属性(项目)复制到对象。由于您想要一个具有CSSID属性的对象,因此请将其设置为目标对象或以下来源之一的属性:

CSSID应该是对象的属性:

const x = [{ port: 3000, typ: "port" }, { port: 4000, typ: "port" }];
const CSSID = [3246237348, 738423894, 73824923];
const ob = Object.assign({}, x[0], { CSSID }); // or Object.assign({ CSSID }, x[0]);

console.log(ob);