我有两个 JSONS,我必须从中创建一个数组
数组 1:[{ label: "HEADER" value:"header" }, { label: "FOOTER" value:"footer" }]
数组2:[ { header: "Header 1", footer: "Footer 1" }, { header: "Header 2", footer: "Footer 2" }]
预期数组(Array1 的标签将是 Array2 Keys 中的搜索条件:[["Header 1","Header 2"],["Footer 1","Footer 2"]]
最佳答案
您可以使用 Array.map()
在 Array1 上,然后对于该数组中的每个值,再次运行 .map(),返回 Array2 中的所有匹配项。
我们会使用 Array.find()
和 String.includes()
去做这个。
const Array1 = [ { label: "HEADER", value:"header" }, { label: "FOOTER", value:"footer" } ]
const Array2 = [ { header: "Header 1", footer: "Footer 1" }, { header: "Header 2", footer: "Footer 2" } ]
const result = Array1.map(({ label, value}) => {
return Array2.map((obj) => {
let key = Object.keys(obj).find(key => key.includes(value));
return key ? obj[key]: null;
})
})
console.log('Result:', result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
另一个例子,这次 Array2 有一个没有页脚属性的条目(根据要求):
const Array1 = [ { label: "HEADER", value:"header" }, { label: "FOOTER", value:"footer" } ]
const Array2 = [ { header: "Header 1", footer: "Footer 1" }, { header: "Header 2" }]
const result = Array1.map(({ label, value}) => {
return Array2.map((obj) => {
let key = Object.keys(obj).find(key => key.includes(value));
return key ? obj[key]: null;
})
})
console.log('Result:', result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 比较 json 数组并生成一个简单的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70180995/