Javascript 如何比较两个json对象,检查id是否相同,然后分配给另一个对象值?

Javascript 如何比较两个json对象,检查id是否相同,然后分配给另一个对象值?,javascript,angularjs,angular,typescript,Javascript,Angularjs,Angular,Typescript,我有两个目标 var JSON_Categories = '[{ "id" : "1", "text" : "Category A"}, { "id" : 2, "text" : "Category B" }]'; var JSON_Article = '[{ "id" : "1", "text"

我有两个目标

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);
若id匹配两个JSON值,那个么我需要为文本类别文本值分配一个文章文本值

它尝试过这样的方法,我知道这不是一个好的解决方案,有人能帮我吗

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);

       

您可以
map
it,并在
中从第二个数组中查找
对象:

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});

控制台日志(结果)
你想替换
类别中的每个匹配对象还是只替换一个?另外,你想替换原始数组中的值还是用修改过的对象创建一个新数组?只有一个文本值,但我需要在替换文本值、一个值后竞争对象。这不是JSON问题。是的,
JSON_类别
JSON_文章
包含JSON,但是除了解析之外,您没有对它们做任何事情。实际的比较是问题/问题。非常感谢您,它在js示例中工作得非常好,但是当使用Angular 8时,出现了一个错误:“预计,我如何使用Angular的相同功能?@YOG_PHP似乎您得到了
type
error,尝试指定如下类型
JSON_Categories.map({id,text}:any)
(k=>k.id==id)?.text,此处显示错误。