Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 如何链接这个reduce和map函数_Javascript_Dictionary_Reduce - Fatal编程技术网

Javascript 如何链接这个reduce和map函数

Javascript 如何链接这个reduce和map函数,javascript,dictionary,reduce,Javascript,Dictionary,Reduce,这两个参数都是对象列表。它们都包含属性名。我想在属性名称相等的情况下投影它们的一些属性。下面给出了正确的结果。然而,有人能帮我把它重构成一次遍历吗 export function fieldProjections(docTypeFields, recordFields) { const recordsByName = recordFields.reduce(function (rec, field) { rec[field.Name] = field;

这两个参数都是对象列表。它们都包含属性名。我想在属性名称相等的情况下投影它们的一些属性。下面给出了正确的结果。然而,有人能帮我把它重构成一次遍历吗

 export function fieldProjections(docTypeFields, recordFields) {
    const recordsByName = recordFields.reduce(function (rec, field) {
        rec[field.Name] = field;
        return rec;
    }, {});
    const fields = docTypeFields.map(dt => {
        return {
            'Name': dt.Name,
            'RawValue': recordsByName[dt.Name].RawValue,
            'Type': dt.DataType,
            'Value': recordsByName[dt.Name].Value,
            'Id': dt.DocumentTypeFieldID
        };
    });
    return fields;
}
让docTypeFields=[{Name:'doc1',RawValue:'8',Type:'large',Value:'3.50',Id:'1'},{Name:'doc2',RawValue:'11',Type:'medium',Value:'4.50',Id:'2'},{Name:'doc3',Value:'3.60',Id:'3'},{Name:'doc4',RawValue:'22',Type:'small',Value:'2.50',Id:'4'},
记录字段=[{Name:'doc1',Field:'field1'},{Name:'doc2',Field:'field2'},{Name:'doc3',Field:'field3'},{Name:'doc4',Field:'field4'}];
docTypeFields.forEach(doc=>{
让siblingRecord=recordFields.find(record=>record.Name==doc.Name);
如果(同级记录)单据字段=同级记录字段;
});

console.log(docTypeFields)“将其重构为一次遍历?”-为什么?当前代码只对每个输入数组遍历一次,因此我不知道如何遍历少于此值。另一方面,如果您使用单个对象文本一次创建所有属性,则
.map()
回调可能会被清理干净。它不会比您已经拥有的更好。但是你可以用一个映射来代替散列/“关联数组”。我想单次遍历是一个误称。我想在一个表达式中执行上述操作。这会导致比OP的代码更多的迭代。(并且它改变了输入数据。)这是公平的。我没有注意到他想要在一次遍历中实现它,只是试图简化代码。至于对象变异,复制每个文档并将其存储在一个新数组中(尽管我应该强调我正在修改docTypeFields)。