admin管理员组文章数量:1435534
I want to construct a new array based on two sets of arrays. My current attempt is:
const mylist = [
{
"city" : "aa",
"country" : "de"
},
{
"city" : "bb",
"country" : "us"
},
{
"city" : "cc",
"country" : "ca"
},
{
"city" : "dd",
"country" : "za"
},
{
"city" : "ee",
"country" : "fr"
},
{
"city" : "ff",
"country" : "gr"
}
]
const stats = [{name : 'original', count: 'one'}, {name: 'copy', count: 'two'}, {name: 'redundant', count: 'three'}];
let myFinalList = [];
let str = 'hello.';
mylist.forEach(function (place, nn) {
let suffix = place.country;
stats.forEach(function (k) {
let items = {};
items[k.name] = str + k.count + '.' + suffix;
items['city'] = place.city;
myFinalList.push(items);
});
}, this);
console.log('print out: ', myFinalList);
the expected result is:
[ { original: 'hello.one.de', copy: 'hello.two.de', redundant: 'hello.three.de', city: 'aa' },
{ original: 'hello.one.us', copy: 'hello.two.us', redundant: 'hello.three.us', city: 'bb' },
...
{ original: 'hello.one.gr', copy: 'hello.two.gr', redundant: 'hello.three.gr', city: 'ff' }]
could somebody help me achieve this goal? i am confused and can't get the right array structure.
I want to construct a new array based on two sets of arrays. My current attempt is:
const mylist = [
{
"city" : "aa",
"country" : "de"
},
{
"city" : "bb",
"country" : "us"
},
{
"city" : "cc",
"country" : "ca"
},
{
"city" : "dd",
"country" : "za"
},
{
"city" : "ee",
"country" : "fr"
},
{
"city" : "ff",
"country" : "gr"
}
]
const stats = [{name : 'original', count: 'one'}, {name: 'copy', count: 'two'}, {name: 'redundant', count: 'three'}];
let myFinalList = [];
let str = 'hello.';
mylist.forEach(function (place, nn) {
let suffix = place.country;
stats.forEach(function (k) {
let items = {};
items[k.name] = str + k.count + '.' + suffix;
items['city'] = place.city;
myFinalList.push(items);
});
}, this);
console.log('print out: ', myFinalList);
the expected result is:
[ { original: 'hello.one.de', copy: 'hello.two.de', redundant: 'hello.three.de', city: 'aa' },
{ original: 'hello.one.us', copy: 'hello.two.us', redundant: 'hello.three.us', city: 'bb' },
...
{ original: 'hello.one.gr', copy: 'hello.two.gr', redundant: 'hello.three.gr', city: 'ff' }]
could somebody help me achieve this goal? i am confused and can't get the right array structure.
Share Improve this question asked Nov 23, 2017 at 3:12 moaningalwaysmoaningalways 4611 gold badge10 silver badges21 bronze badges 1- 1 Looks like you're declaring items in side the foreach. Could be wrong but I think you want to do it outwith the loop itself. – CBusBus Commented Nov 23, 2017 at 3:15
2 Answers
Reset to default 2i think you are missing the right position to declare the variables:
mylist.forEach(function (place, nn) {
let suffix = place.country;
let items = {};
stats.forEach(function (k) {
items[k.name] = str + k.count + '.' + suffix;
});
items['city'] = place.city;
myFinalList.push(items);
}, this);
Why not we try using .map() and .reduce() and Template literals ?
/* transform every place in mylist ...*/
var finalList = mylist.map(place => {
/* 1. create a new ITEM object with CITY property set with PLACE.CITY.
2. for each stat, create a new property in ITEM and set its value with string interpolation..
3. return ITEM as the transformed object...*/
return stats.reduce((item, stat) => {
item[stat.name] = `${str}.${stat.count}.${place.country}`;
return item;
}, { city: place.city });
});
var mylist = [
{ city: "aa", country: "de" },
{ city: "bb", country: "us" },
{ city: "cc", country: "ca" },
{ city: "dd", country: "za" },
{ city: "ee", country: "fr" },
{ city: "ff", country: "gr" }
];
var stats = [
{ name: 'original', count: 'one' },
{ name: 'copy', count: 'two' },
{ name: 'redundant', count: 'three' }
];
var str = 'hello';
/* transform every place in mylist ...*/
var finalList = mylist.map(place => {
/* 1. create a new ITEM object with CITY property set with PLACE.CITY.
2. for each stat, create a new property in ITEM and set its value with string interpolation..
3. return ITEM as the transformed object...*/
return stats.reduce((item, stat) => {
item[stat.name] = `${str}.${stat.count}.${place.country}`;
return item;
}, { city: place.city });
});
console.log('print out: ', finalList);
本文标签: javascript merge two arrays with forEachStack Overflow
版权声明:本文标题:javascript merge two arrays with forEach - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745634939a2667499.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论