繁体   English   中英

Lodash更新另一个数组Chain / Map中的元素值

[英]Lodash update element values from another array Chain / Map

我如何使用Lodash使用另一个数组元素数据值更新数组元素值

var Master_Array [
{ Name: "Jon", Region: "North America & Caribbean" },
{ Name: "Ruan", Region: "Asia Pacific" }
]

var Regions_Map = [
{ Region: 'Europe', NewRegion: 'EMEA' },
{ Region: 'North America & Caribbean', NewRegion: 'NAC' },
{ Region: 'Asia Pacific', NewRegion: 'APAC' }
]

我认为可以这样做:

_.chain()
.mapValues( ...blá blá... )
.values()
.value();

预期结果:

var Master_Array [
{ Name: "Jon", Region: "NAC" },
{ Name: "Ruan", Region: "APAC" }
]

您不需要在迭代集合而不是对象时执行mapValues ,因此mapKeysmapValues是迭代对象并映射到另一个对象的mapValues方法

现在,方法1,如果您想运行将返回预期项目的新数组的内容,请尝试使用这种map

var EXPECTED_RESULT = _.map(Master_Array, function(item){
    var newItem = {};
    newItem.Name = item.Name;
    newItem.Region = _.find(Regions_Map, {Region: item.Region}).NewRegion
    return newItem;
});

如果要修改现有数组,则只需通过loadash或普通javascript循环对其进行循环,然后执行操作

_.each(Master_Array,function(item){
    item.Region = _.find(Regions_Map, {Region: item.Region}).NewRegion
} )

使用mapfind解决方案:

 var Master_Array = [ { Name: "Jon", Region: "North America & Caribbean" }, { Name: "Ruan", Region: "Asia Pacific" } ]; var Regions_Map = [ { Region: 'Europe', NewRegion: 'EMEA' }, { Region: 'North America & Caribbean', NewRegion: 'NAC' }, { Region: 'Asia Pacific', NewRegion: 'APAC' } ]; Master_Array = Master_Array.map((person) => ({ Name: person.Name, Region: Regions_Map.find((region) => region.Region === person.Region).NewRegion })); console.log(Master_Array); 

JavaScript解决方案

 var Master_Array = [ { Name: "Jon", Region: "North America & Caribbean" }, { Name: "Ruan", Region: "Asia Pacific" } ]; var Regions_Map = [ { Region: 'Europe', NewRegion: 'EMEA' }, { Region: 'North America & Caribbean', NewRegion: 'NAC' }, { Region: 'Asia Pacific', NewRegion: 'APAC' } ]; var result = []; Master_Array.forEach(function(data){ var temp = Regions_Map.filter(function(map){ if(map.Region === data.Region){ return map; } }); if(temp){ result.push({ Name : data.Name, NewRegion: temp[0].NewRegion }); } }); console.log(result); 

暂无
暂无

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

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