2017-06-21 139 views
0

我怎会与JavaScript /的NodeJS如下:喷射/复制一个JSON对象到另一个JSON对象延伸其中

注入JSON结果A(只有一个JSON对象)

[{ 
    "user": "userA", 
    "group": "groupA" 
}] 

成JSON结果B(具有相同的结构的多个JSON对象)

[{ 
    "picture": "picA", 
    "city": "cityA", 
    "year": "2016" 
}, 
{ 
    "picture": "picB", 
    "city": "cityB", 
    "year": "2017" 
}] 

和创建注射A之后欲望JSON对象C分为B

[{ 
    "user": "userA", 
    "group": "groupA", 
    "picture": "picA", 
    "city": "cityA", 
    "year": "2016" 
}, 
{ 
    "user": "userA", 
    "group": "groupA", 
    "picture": "picB", 
    "city": "cityB", 
    "year": "2017" 
}] 

我需要组合两个JSON结果如下。但是对象A应该被复制到所有B对象中以扩展它们。

+0

做对象A的属性覆盖对象B的属性? – Cheloide

+0

A中的属性/字段可以与B中的名称相同,但是它们不应该覆盖B中的任何内容。 –

回答

1

既然你只有元,下面如果有重复的属性名称将合并的属性,而不会覆盖:如果你想覆盖旧数组的元素(而不是创建一个新的数组)

let toBeCopied = [{ 
    "user": "userA", 
    "group": "groupA" 
}]; 

let result = [{ 
    "picture": "picA", 
    "city": "cityA", 
    "year": "2016" 
}, 
{ 
    "picture": "picB", 
    "city": "cityB", 
    "year": "2017" 
}]; 

let merged = result.map(r => Object.assign({}, toBeCopied[0], r)); 

,而是执行此操作:

for (let i = 0; i < result.length; i++) { 
    result[i] = Object.assign({}, toBeCopied[0], result[i]); 
} 

但是,如果在未来的任何属性是对象,记住只有对象的引用将被复制(它不会深克隆)。

相关问题