Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 由另一个对象覆盖对象数组而不影响第一个';s指令_Javascript_Ecmascript 6_Lodash - Fatal编程技术网

Javascript 由另一个对象覆盖对象数组而不影响第一个';s指令

Javascript 由另一个对象覆盖对象数组而不影响第一个';s指令,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,我有两个对象数组,如下所示: var listA = [ { name: 'monday', reported: '', closed: '' }, { name: 'tuesday', reported: '', closed: '' }, { name: 'wednesday', reported: '', closed: '' }, { name: 'thursday', reported: '', closed: '' }, { name: 'fr

我有两个对象数组,如下所示:

var listA = [
    { name: 'monday', reported: '', closed: '' },
    { name: 'tuesday', reported: '', closed: '' },
    { name: 'wednesday', reported: '', closed: '' },
    { name: 'thursday', reported: '', closed: '' },
    { name: 'friday', reported: '', closed: '' },
    { name: 'saturday', reported: '', closed: '' },
    { name: 'sunday', reported: '', closed: '' }
];

var listB = [
    { name: 'friday', reported: '23', closed: '17' },
    { name: 'tuesday', reported: '28', closed: '24' },
    { name: 'saturday', reported: '10', closed: '8' },
];
我想用listB中的值覆盖listA,而不影响listA中对象的顺序。我用unionBy试过了。结果如下:

{name: "friday", reported: "23", closed: "17"}
{name: "tuesday", reported: "28", closed: "24"}
{name: "saturday", reported: "10", closed: "8"}
{name: "monday", reported: "", closed: ""}
{name: "wednesday", reported: "", closed: ""}
{name: "thursday", reported: "", closed: ""}
{name: "sunday", reported: "", closed: ""}
我期待以下结果:

{name: "monday", reported: "", closed: ""}
{name: "tuesday", reported: "28", closed: "24"}
{name: "wednesday", reported: "", closed: ""}
{name: "thursday", reported: "", closed: ""}
{name: "friday", reported: "23", closed: "17"}
{name: "saturday", reported: "10", closed: "8"}
{name: "sunday", reported: "", closed: ""}
我知道如何通过迭代
listA
并用相同的
name
替换
listB
中的值来实现这一点。但是,我想知道是否有更好的方法通过lodash或ES6实现这一点

使用
map
(这样数组就不必变异)和
find

var listC = listA.map( s => 
     Object.assign( {}, s, 
      listB.find( s1 => s1.name == s.name ) ) );
演示

var listA=[
{名称:'monday',报告:'',关闭:''},
{name:'星期二',报告:'',关闭:''},
{name:'星期三',报告:'',关闭:''},
{name:'星期四',报告:'',关闭:''},
{名称:'friday',报告:'',关闭:''},
{name:'saturday',报告:'',关闭:''},
{name:'sunday',报告:“”,已关闭:“”
];
var listB=[
{姓名:'friday',报道:'23',结束:'17'},
{姓名:'周二',报道:'28',结束:'24'},
{name:'saturday',reported:'10',closed:'8'},
];
var listC=listA.map(s=>
赋值({},s,
查找(s1=>s1.name==s.name));
console.log(listC)使用
map
(这样数组就不必变异)和
find

var listC = listA.map( s => 
     Object.assign( {}, s, 
      listB.find( s1 => s1.name == s.name ) ) );
演示

var listA=[
{名称:'monday',报告:'',关闭:''},
{name:'星期二',报告:'',关闭:''},
{name:'星期三',报告:'',关闭:''},
{name:'星期四',报告:'',关闭:''},
{名称:'friday',报告:'',关闭:''},
{name:'saturday',报告:'',关闭:''},
{name:'sunday',报告:“”,已关闭:“”
];
var listB=[
{姓名:'friday',报道:'23',结束:'17'},
{姓名:'周二',报道:'28',结束:'24'},
{name:'saturday',reported:'10',closed:'8'},
];
var listC=listA.map(s=>
赋值({},s,
查找(s1=>s1.name==s.name));

console.log(listC)
我想知道写
Object.assign({},s,listB.find(s1=>s1.name==s.name))
而不是
Object.assign(s,listB.find(s1=>s1.name==s.name))
@Arkej可能是因为这会修改列表数组。我想知道写
Object.assign({},s,listB.find)是否有任何原因(s1=>s1.name==s.name))
而不是
Object.assign(s,listB.find(s1=>s1.name==s.name))
@Arkej可能是因为这样会修改listA数组