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

如何将对象数组中的数组类型属性转换为字符串?

如何将对象数组中值为数组的属性转换为对应字符串值?

给定如下原始对象数组:

let peopleDetails = [
  {
    name: "raj",
    favCar: [{ name: "audi", color: "white" }],
    favFood: [{ color: "brown", name: "Idli" }],
  },
  { name: "deepak", place: "India", favPlace: [{ name: "Tajmahal" }] },
];

需要将其中值为数组的属性(如favCar、favFood)转换为数组内对象的name属性值,得到如下结构:

let peopleDetails = [
  { name: "raj", favCar: "audi", favFood: "Idli" },
  { name: "deepak", place: "India", favPlace: "Tajmahal" },
];

解决方案

可以通过Array.map()、Object.entries()和Object.fromEntries()组合实现转换:

const peopleDetails = [
  {
    name: "raj",
    favCar: [{ name: "audi", color: "white" }],
    favFood: [{ color: "brown", name: "Idli" }],
  },
  { name: "deepak", place: "India", favPlace: [{ name: "Tajmahal" }] },
];

const transformedData = peopleDetails.map(person => {
  return Object.fromEntries(
    Object.entries(person).map(([key, value]) => {
      // 筛选出值为非空数组且首元素含name属性的字段,替换为name值
      if (Array.isArray(value) && value.length > 0 && 'name' in value[0]) {
        return [key, value[0].name];
      }
      // 其余字段保持原数值
      return [key, value];
    })
  );
});

console.log(transformedData);

逻辑说明

  1. 用map遍历原数组中的每个对象;
  2. 对每个对象,通过Object.entries()将键值对转为可遍历的数组;
  3. 遍历每个键值对,判断属性值是否为非空数组且首元素包含name属性,满足则替换为该name字符串;
  4. 最后用Object.fromEntries()将处理后的键值对数组重新转为对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:55:24