Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 减少JS中的对象错误行为?_Javascript_Typescript - Fatal编程技术网

Javascript 减少JS中的对象错误行为?

Javascript 减少JS中的对象错误行为?,javascript,typescript,Javascript,Typescript,我使用以下方法: const data = this.forms.reduce((accumulator, current) => { return (accumulator[current.name] = current.value); } }, {}); 其中,此.forms为: [ {value: {document: "fsfsf", seria: "fsfsfsf"}, "name": "Form1"}, {value: {seria: "A

我使用以下方法:

const data = this.forms.reduce((accumulator, current) => {
       return (accumulator[current.name] = current.value);
      }
    }, {});
其中,
此.forms
为:

[
{value: {document: "fsfsf", seria: "fsfsfsf"}, "name": "Form1"}, 
{value: {seria: "AA", age: "45"}, "name": "Form2"},
{value: {marry: "yes", hobby: "AAA"}, "name": "Form3"}
]
我需要建立这个结果:

{
   "Form1":  {document: "fsfsf", seria: "fsfsfsf"},
   "Form2":  {seria: "AA", age: "45"},
   "Form3":  {marry: "yes", hobby: "AAA"}
}
但我得到了错误的结果:

{
   {document: "fsfsf", seria: "fsfsfsf"},
   "Form2": {}
}

我不明白为什么?

对的累加器的回调函数必须返回累加器以应用于数组中的后续元素。返回赋值表达式的结果将返回表达式的结果(在本例中为当前值),而不是累加器

const forms=[
{值:{文档:“fsf”,序列号:“fsf”},名称:“'Form1”},
{值:{seria:“AA”,年龄:“45”},姓名:“Form2”},
{价值:{marry:“yes”,hobby:“AAA”},name:“Form3”}
];
const data=forms.reduce((累加器,当前)=>{
累加器[当前.name]=当前.value;
回流蓄能器;
}, {});

控制台日志(数据)非常感谢,我可以使用{…累加器}立即返回值并得到相同的结果吗?当然,您可以这样做,但这比在整个过程中传递相同的对象引用效率要低。创建对象很昂贵。像这样返回{…累加器,…[current.name]=current.formGroup.value};`?如果只是对同一对象进行变异,为什么要使用
reduce()
?如果
forEach()
更适合并且更容易理解,则似乎不必要地复杂和冗余。您也可以使用
forEach
,但reduce的目的正是您所说的:为数组中的每个元素变异累加器
forEach
可能被认为不太合适,因为它不纯净(在其自身回调之外变异状态)。在JS函数数组方法的层次结构中,
forEach
是最通用的,其中
reduce
forEach
的特例,
map
filter
reduce
的特例。