首页 > 解决方案 > 如何比较两个 json 对象,检查 id 是否相同然后分配给另一个对象值?

问题描述

我有两个对象

var JSON_Categories = '[{ "id" : "1", "text" : "Category A"}, { "id" : 2, "text" : "Category B" }]';
var JSON_Article = '[{ "id" : "1", "text" : "Article text A"}, { "id" : 3, "text" : "Article B"}]';
var categories = JSON.parse(JSON_Categories);
var article = JSON.parse(JSON_Article);

如果两个 JSON 值的 id 匹配,我需要为文本类别文本值分配文章文本值。

它尝试过这样的事情,我知道这不是一个好的解决方案,有人可以帮我吗?

var categoryValue = new Object();
categories.forEach(function(category) {
articles.forEach(article => {
    if (category.id === article.id) {
        categoryValue.id = category.id;
        categoryValue.text = article.text;
    } else {
        categoryValue.id = category.id;
        categoryValue.text = category.text;
    }
});
});

console.log('categoryValue', categoryValue);

       

标签: javascriptangularjsangulartypescript

解决方案


您可以在第二个数组map中的对象内部:find

var JSON_Categories = JSON.parse('[{ "id" : "1", "text" : "Category A"}, { "id" : 2, "text" : "Category B" }]');
var JSON_Article = JSON.parse('[{ "id" : "1", "text" : "Article text A"}, { "id" : 3, "text" : "Article B"}]');

var result = JSON_Categories.map(({id, text})=>({id, text:JSON_Article.find(k=>k.id==id)?.text || text}));

console.log(result);


推荐阅读