我正在尝试使用两个集合的输出来组合字符串。为此,我使用_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
答案 0 :(得分:0)
我不确定这是否正是您想要的,但我认为您可以使用嵌套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);
答案 1 :(得分:0)
似乎:
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"]