繁体   English   中英

向对象数组中的所有对象插入一个新的键值对而不循环

[英]Inserting a new key-value pair to all objects in an array of objects without looping

我有一个包含具有相似结构的对象的对象数组。 我需要向数组中的所有对象添加一个新的键值对。 如何在不循环整个数组的情况下做到这一点。

提供我需要的输出示例,

let arr = [{a:1,b:2}, {a:2,b:3}];
let key = c;
let value = 3;

所需的输出将是这样的,

//arr2 = [ {a:1,b:2,c:3}, {a:2,b:3,c:3}]

PS:尝试使用扩展运算符,但几乎没有成功。

如何在不循环整个数组的情况下做到这一点。

你不能(合理地)。 完全不合理的方法是将它添加到Object.prototype ,它被所有对象继承,因此将它添加到数组中的所有对象 - 以及其他任何地方。

但同样:你不能合理地,你需要循环(以一种或另一种形式)。 该循环可能是函数式编程中的递归,但它基本上仍然是一个循环。

这是技术上非循环的递归方式:

 let arr = [{a:1,b:2}, {a:2,b:3}]; let el = {c:3}; (function go(a, i, e) { if (i < a.length) { a[i].c = ec; go(a, i + 1, e); } })(arr, 0, el); console.log(arr);
 .as-console-wrapper { max-height: 100% !important; }

您可以在数组和Object.assign()上使用map()运算符来附加键,值对

 let arr = [{a:1,b:2}, {a:2,b:3}]; let finalArray = arr.map(function(obj){return Object.assign(obj,{c:3});}) console.log(finalArray);
 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM