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

如何将输入从对象数组改为单个对象以获得相同输出结果?

问题描述

原来的代码可基于对象数组input和reference数组,以reference.value2作为属性键生成新对象数组,代码如下:

const reference = [
    { value1: "valueA", value2: "valueB" },
    { value1: "valueC", value2: "valueD" },
    { value1: "valueE", value2: "valueF" }
];
const input = [
    { valueA: 'some text'},
    { valueC: 'some more text'},
    { valueX: 'text to ignore'}, // valueX不在reference中,会被忽略
    { valueE: 'yet more text'}
];

const outputArray = reference.map(({ value1, value2 }) => {
  const found = input.find(obj => obj[value1]);
  return {
    [value2]: found[value1]
  };
});

console.log(outputArray)

输出结果:

[
    { valueB: 'some text'},
    { valueD: 'some more text'},
    { valueF: 'yet more text'}
]

现在需要将input从对象数组改为单个对象:

const input = {
    valueA: 'some text',
    valueC: 'some more text',
    valueX: 'text to ignore', // valueX不在reference中,会被忽略
    valueE: 'yet more text'
}

请问如何修改代码以实现相同的输出结果?

修改后的代码实现

直接简化map中的逻辑即可,因为input已经是单个对象,无需再用find遍历数组,直接通过属性名访问对应值:

const reference = [
    { value1: "valueA", value2: "valueB" },
    { value1: "valueC", value2: "valueD" },
    { value1: "valueE", value2: "valueF" }
];
const input = {
    valueA: 'some text',
    valueC: 'some more text',
    valueX: 'text to ignore',
    valueE: 'yet more text'
};

const outputArray = reference.map(({ value1, value2 }) => {
  // 直接从input对象中获取对应value1的属性值
  return {
    [value2]: input[value1]
  };
});

console.log(outputArray);

补充优化(可选)

如果担心input中不存在某个value1对应的属性导致返回undefined,可以添加过滤逻辑,只保留有有效值的项:

const outputArray = reference
  .filter(({ value1 }) => input.hasOwnProperty(value1))
  .map(({ value1, value2 }) => ({
    [value2]: input[value1]
  }));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:42:24