javascript - 比较 json 数组并生成一个简单的数组

标签 javascript typescript

我有两个 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/

相关文章:

Angular 6 - '"/node_modules/firebase/index "' has no exported member ' 函数'

typescript - HttpClientInMemoryWebApiModule 错误。我可以要两个吗?

javascript - 如果图像具有类,则添加类

javascript - 如何使用 Rollup 将 js 文件作为字符串导入?

javascript - 将路线另存为图像 bing map

typescript - 为什么某些 Typescript 模块名称以字符串形式给出?

javascript - 如何在 SignalR 上获取已连接客户端的列表

javascript - Node.js:将远程文件流式传输到文件下载

angular - 订阅方法返回未定义的 json 对象

javascript - 在 webpack 编译的 JavaScript 中读取 NodeJS process.argv