javascript - 如何在纯JS上排列?
问题描述
我不确定它应该被称为规范化,但我没有想到更好的名字,所以任务:我有一个对象数组(我们称之为包含and的mainData),一个道具是对象数组。里面的物体和数量各不相同。我想获取mainData但每个包含对象都应该有相同的对象,如下所示:我有:obj1
obj2
someData
someData
someData
let obj1 = {
someData: [
{
name: 'Name 1',
value: 1111,
},
{
name: 'Name 2',
value: 2222,
},
{
name: 'Name 3',
value: 3333,
}
]
}
let obj2 = {
someData: [
{
name: 'Name 1',
value: 1111,
},
{
name: 'Name 2',
value: 2222,
},
{
name: 'Name 4',
value: 4444,
},
{
name: 'Name 5',
value: 5555,
}
]
}
我想:
let obj1 = {
someData: [
{
name: 'Name 1',
value: 1111,
},
{
name: 'Name 2',
value: 2222,
},
{
name: 'Name 3',
value: 3333,
},
{
name: 'Name 4',
value: null,
},
{
name: 'Name 5',
value: null,
}
]
}
let obj2 = {
someData: [
{
name: 'Name 1',
value: 1111,
},
{
name: 'Name 2',
value: 2222,
},
{
name: 'Name 3',
value: null,
},
{
name: 'Name 4',
value: 4444,
},
{
name: 'Name 5',
value: 5555,
}
]
}
解决方案
试试这个。循环遍历每个数组并检查对象是否存在于另一个数组中。如果不以 null 值推送它。请在下面找到一个示例。
let obj1 = {
someData: [
{
name: "Name 1",
value: 1111
},
{
name: "Name 2",
value: 2222
},
{
name: "Name 3",
value: 3333
}
]
};
let obj2 = {
someData: [
{
name: "Name 1",
value: 1111
},
{
name: "Name 2",
value: 2222
},
{
name: "Name 4",
value: 4444
},
{
name: "Name 5",
value: 5555
}
]
};
obj1.someData.forEach(obj => {
const itemInSecondArray = obj2.someData.find(
item => item.name === obj.name
);
if (!itemInSecondArray) {
obj2.someData.push({
name: obj.name,
value: null
});
}
});
obj2.someData.forEach(obj => {
const itemInFirstArray = obj1.someData.find(
item => item.name === obj.name
);
if (!itemInFirstArray) {
obj1.someData.push({
name: obj.name,
value: null
});
}
});
// Sort
obj1.someData.sort((a, b) => (a.name < b.name)? -1: 1);
obj2.someData.sort((a, b) => (a.name < b.name)? -1: 1);
console.log(obj1);
console.log(obj2);
推荐阅读
- microservices - jhipster 注册中心/控制中心向网关应用程序发送管理请求导致 401 未授权
- html - 为什么不使用填充作为显示?
- python - 我可以将 python 服务器与 kotlin 客户端连接起来吗?
- java - 我如何检测是否有人输入了错误的 otp
- r - 如果使用融化的 data.table,如何使用 ggplot2 向条形图添加标签?
- azure - 如何从 ADO 管道中检索功能键?
- python - 如何将牌传给其他玩家等等。说P1抽了4个梅花,我怎么传给P2
- python-3.x - np.argsort 和 pd.nsmallest 给出不同的结果
- google-apps-script - 如何在 Google Docs 中添加清单?
- amazon-ecs - AWS 代码管道的部署在 Next 应用程序中失败