我试图使用两个集合的输出组装一个字符串。为此,我使用_forEach函数迭代其中一个,并使用它的输出作为另一个迭代器的输入。但我不能让它发挥作用。
码:
const data1 = [{
label: 'Id',
data: 'id'
},
{
label: 'First name',
data: 'first_name'
},
{
label: 'Last name',
data: 'last_name'
},
{
label: 'IP Address',
data: 'ip_address'
},
];
const data2 = [{
"id": 1,
"first_name": "Robinet",
"last_name": "Golsby",
"ip_address": "201.83.127.236"
}, {
"id": 2,
"first_name": "Kirby",
"last_name": "Feaver",
"ip_address": "143.188.49.149"
}]
let keys = '';
const getKeys = _.forEach(data1, value => keys += '' +value.data);
let stringValue = '';
const getStringValue = _.forEach(tableData, value => stringValue += ' ' + value.first_name);
所以我可以从第一个对象获得一个键列表,我可以从第二个获取值列表,但前提是键是硬编码的。我想要做的是迭代'外部'迭代器中的data2
中的每个条目,同时提供密钥以使用data1
上的迭代来获取值。我怎么做?
编辑:最终结果如下:
1 Robinet Golsby 201.83.127.236
似乎:
const result = _.chain(data1)
.map('data') // get keys from data1
.thru(keys => _.map(data2, item => _.at(item, keys))) // iterate data2 and get values by keys
.map(values => _.join(values, ' ')) // values array to string
.value();
结果:
["1 Robinet Golsby 201.83.127.236", "2 Kirby Feaver 143.188.49.149"]
我不确定这是否正是你想要的,但我认为你可以使用嵌套Array#map调用实现你的目标:
const data1 = [{"label":"Id","data":"id"},{"label":"First name","data":"first_name"},{"label":"Last name","data":"last_name"},{"label":"IP Address","data":"ip_address"}];
const data2 = [{"id":1,"first_name":"Robinet","last_name":"Golsby","ip_address":"201.83.127.236"},{"id":2,"first_name":"Kirby","last_name":"Feaver","ip_address":"143.188.49.149"}];
const result = data2.map((obj) => data1.map(({ label, data }) => ({
label,
data: obj[data]
})));
console.log(result);