[英]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
,因此mapKeys
和mapValues
是迭代对象并映射到另一个对象的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
} )
使用map
和find
解决方案:
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.