来自第一个数组的字段值以从 Javascript 中的第二个数组中获取值
Field value from first Array to get the values from the Second Array in Javascript
我有两个数组,arr1 有字段,我只需要从中获取字段值。应使用 arr2 检查字段值,如果它与键的名称匹配,则需要创建如下输出:
let arr1 = [{
field: "name",
value: "some1",
value1: "some2"
},{
field: "job",
value: "some1",
value1: "some2"
},{
field: "from",
value: "some1",
value1: "some3"
}
];
let arr2 = [{
name: "John",
job: "engineer",
address: "abc",
from: "boston",
gender: "male"
},{
name: "Steph",
job: "worker",
address: "uhuh",
from: "uk",
gender: "male"
},{
name: "dor",
job: "farmer",
address: "gdgs",
from: "us",
gender: "female"
}
];
需要输出:
[{
name: "John",
job: "engineer",
from: "boston"
},{
name: "Steph",
job: "worker",
from: "uk"
},{
name: "Ram",
job: "farmer",
from: "us"
}
];
我试过这样做,但我只得到 arr2 中的最后一个值。
for(let index = 0; index < arr2.length; index++){
for(let newi = 0; newi < arr1.length; newi++){
newObj = arr1[newi].field;
final[newObj] = arr2[index][newObj]
last.push(final[newObj])
}
console.log(last)
}
这样做,使用 Array.map
& Array.reduce
const arr1 = [{ field: "name", value: "some1", value1: "some2"},{ field: "job", value: "some1", value1: "some2"},{ field: "from", value: "some1", value1: "some3"}];
const arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male"},{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male"},{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female"}];
const result = arr2.map(item => arr1.reduce((acc, {field}) => {
acc[field] = item[field];
return acc;
}, {}));
console.log(result);
使用 map
和 Object.assign
const arr1 = [{ field: "name", value: "some1", value1: "some2"},{ field: "job", value: "some1", value1: "some2"},{ field: "from", value: "some1", value1: "some3"}];
const arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male"},{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male"},{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female"}];
const fields = arr1.map(({ field }) => field);
const output = arr2.map((item) =>
Object.assign({}, ...fields.map((field) => ({ [field]: item[field] })))
);
console.log(output)
我有两个数组,arr1 有字段,我只需要从中获取字段值。应使用 arr2 检查字段值,如果它与键的名称匹配,则需要创建如下输出:
let arr1 = [{
field: "name",
value: "some1",
value1: "some2"
},{
field: "job",
value: "some1",
value1: "some2"
},{
field: "from",
value: "some1",
value1: "some3"
}
];
let arr2 = [{
name: "John",
job: "engineer",
address: "abc",
from: "boston",
gender: "male"
},{
name: "Steph",
job: "worker",
address: "uhuh",
from: "uk",
gender: "male"
},{
name: "dor",
job: "farmer",
address: "gdgs",
from: "us",
gender: "female"
}
];
需要输出:
[{
name: "John",
job: "engineer",
from: "boston"
},{
name: "Steph",
job: "worker",
from: "uk"
},{
name: "Ram",
job: "farmer",
from: "us"
}
];
我试过这样做,但我只得到 arr2 中的最后一个值。
for(let index = 0; index < arr2.length; index++){
for(let newi = 0; newi < arr1.length; newi++){
newObj = arr1[newi].field;
final[newObj] = arr2[index][newObj]
last.push(final[newObj])
}
console.log(last)
}
这样做,使用 Array.map
& Array.reduce
const arr1 = [{ field: "name", value: "some1", value1: "some2"},{ field: "job", value: "some1", value1: "some2"},{ field: "from", value: "some1", value1: "some3"}];
const arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male"},{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male"},{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female"}];
const result = arr2.map(item => arr1.reduce((acc, {field}) => {
acc[field] = item[field];
return acc;
}, {}));
console.log(result);
使用 map
和 Object.assign
const arr1 = [{ field: "name", value: "some1", value1: "some2"},{ field: "job", value: "some1", value1: "some2"},{ field: "from", value: "some1", value1: "some3"}];
const arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male"},{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male"},{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female"}];
const fields = arr1.map(({ field }) => field);
const output = arr2.map((item) =>
Object.assign({}, ...fields.map((field) => ({ [field]: item[field] })))
);
console.log(output)