【问题标题】:Change property name from an array of object javascript/typescript从对象 javascript/typescript 数组更改属性名称
【发布时间】:2021-08-21 10:39:03
【问题描述】:

我有以下对象数组,我们称之为“myArray”:

0: { name: "name1", key: "12weqw3123123"}
1: { name: "name2", key: "1231231rasd"}
2: { name: "name3", key: "sa43214dasd"}

我想要实现的是将属性命名表单名称切换为键,相反,所以最终结果是这样的:

0: { key: "name1", name: "12weqw3123123"}
1: { key: "name2", name: "1231231rasd"}
2: { key: "name3", name: "sa43214dasd"}

我试过了

  const { name } = myArray;
  const newResp = { key: name };

但它未定义,我也尝试过

const newArray = [...myArray].map((r: { name: any; key: any }) => {
    r.name = r.key;
    delete r.key;
  });

有什么建议吗?谢谢

【问题讨论】:

    标签: javascript arrays typescript ecmascript-6


    【解决方案1】:

    你可以用forEach处理它:

    myArray.forEach(item => {
        let tmp = item.key;
        item.key = item.name;
        item.name = tmp;
    });
    

    从技术上讲,它也可以与 map 一起使用,但一般来说,当您想要创建新数组而不是就地更新时,应该使用 map

    let newArray = myArray.map(item => {
        return {
            key: item.name,
            name: item.key,
        };
    });
    

    【讨论】:

      【解决方案2】:

      您可以使用array#map 交换namekey

      const input = [{ name: "name1", key: "12weqw3123123"},{ name: "name2", key: "1231231rasd"}, { name: "name3", key: "sa43214dasd"}],
            result = input.map(({name, key}) => ({name: key, key: name}));
      console.log(result);
      .as-console-wrapper { max-height: 100% !important; top: 0; }

      【讨论】:

      • 问:CSS 类as-console-wrapper 有什么作用?
      • 它将控制台输出移动到 div 的顶部。
      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2022-10-19
      • 1970-01-01
      • 2020-03-17
      • 2023-03-08
      • 1970-01-01
      • 2013-04-18
      相关资源
      最近更新 更多