You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用数据集键名过滤另一数据集并合并生成新数组?

解决方案

直接用map遍历数据集2,通过UserNumber关联数据集1的键,再合并对象即可,实现代码如下:

const dataset1 = {
    "001": {"hasCar": false, "hasBike": false},
    "002": {"hasCar": true, "hasBike": false},
    "003": {"hasCar": false, "hasBike": false},
    "004": {"hasCar": false, "hasBike": true}
};

const dataset2 = [
    {"UserNumber": "001", "vehicleDetails": {"country": "IN", "color": "Black", "company": "Ford", "postalCode": "XXXXXXX"}},
    {"UserNumber": "002", "vehicleDetails": {"country": "IN", "color": "Black", "company": "Ford", "postalCode": "XXXXXXX"}},
    {"UserNumber": "003", "vehicleDetails": {"country": "IN", "color": "Black", "company": "Ford", "postalCode": "XXXXXXX"}},
    {"UserNumber": "004", "vehicleDetails": {"country": "IN", "color": "Black", "company": "Ford", "postalCode": "XXXXXXX"}}
];

// 合并逻辑
const mergedResult = dataset2.map(userItem => {
    // 用UserNumber匹配dataset1对应的键值
    const extraInfo = dataset1[userItem.UserNumber];
    // 合并两个对象,保留原结构并添加新字段
    return { ...userItem, ...extraInfo };
});

console.log(mergedResult);

逻辑说明

  1. 遍历数据集2:map方法会遍历数组的每一项并返回新数组,刚好符合生成新合并数组的需求。
  2. 关联匹配:通过当前项的UserNumber作为索引,直接从dataset1中取出对应的hasCar和hasBike信息,这种方式比find更高效,时间复杂度为O(n)。
  3. 对象合并:使用扩展运算符...把原用户对象和dataset1中的信息合并,自动将hasCar、hasBike字段添加到结果对象中。

如果需要过滤掉dataset2中不存在于dataset1的项,可以在map前加filter:

const mergedResult = dataset2
    .filter(userItem => dataset1.hasOwnProperty(userItem.UserNumber))
    .map(userItem => ({ ...userItem, ...dataset1[userItem.UserNumber] }));

内容的提问来源于stack exchange,提问作者Strugglingwithbugs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:49:50