javascript - 如何比较两个 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);
解决方案
您可以在第二个数组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);
推荐阅读
- c# - 如何通过 Selenium C# 使用文本查找元素
- csv - 多个 JSON 有效负载到 CSV 文件
- json - Jmeter:为什么我的 JSON 断言会因为问号而失败?
- ios - 类型“MenuItem”不符合协议“Decodable”
- c++ - C++ 多线程:构造函数和析构函数是否需要互斥锁?
- python - 使用python的pdf中的本地超链接
- c - 获取char数组的高度
- java - 我的模块化库的用户有什么方法可以访问尚未导出的类?
- elasticsearch - Kafka-connect elasticsearch如何定义索引映射
- r - R RMySQL 错误在 dbConnect 中找不到函数提取和意外输入