【问题标题】:TypeScript- How to add a Key Value pair to each object in an Array?TypeScript-如何为数组中的每个对象添加键值对?
【发布时间】:2019-02-02 04:15:59
【问题描述】:

我有一个日期数组和一个对象数组。我想将日期作为键值对{"Date": "10-12-18"} 添加到对象数组中。

dates

["10-12-18", "10-13-18", 10-14-18"]

data

[
   {"name":"One", "age": "4"},
   {"name":"Two", "age": "5"},
   {"name":"Three", "age": "9"}
]

我想要...

[
    {"name":"One", "age": "4", "Date": "10-12-18"},
    ....

如何在 TypeScript 中做到这一点?我习惯了普通的 JavaSCript,无法正确使用。

我目前拥有的东西:

for (let idx of data){
   data[idx].date = dates[idx] 
}

谢谢!!

【问题讨论】:

  • 像在 JS 中一样,typescript 应该可以毫无问题地编译 vanilla JS
  • 您可以发布您使用的代码吗?在 Javascript 中执行此操作与在 Typescript 中执行此操作没有什么不同。所以如果它不能在 JS 中工作,你可能做错了什么,打字稿无法解决这个问题
  • “我已经习惯了普通的 JavaSCript 并且无法正确使用它。” 你的不正确的解决方案是什么样的?
  • 已尝试编辑

标签: javascript arrays typescript object


【解决方案1】:

您的代码有什么问题是idx 将是对象而不是您使用for...of 的索引。使用简单的常规 for 就像:

for(let idx = 0; idx < data.length; idx++) {
    data[idx].date = dates[idx];
}

或使用forEach 循环其中一个数组并使用它提供的索引从另一个数组中获取值:

data.forEach((obj, i) => obj.date = dates[i]);

【讨论】:

  • 完美简洁,谢谢。我需要掌握更多过渡到 TypeSCript 的窍门。很高兴看到这两件事并排!
  • @LaurenAH 实际上这仍然是有效的 javascript。
【解决方案2】:

类似的东西:

    let dates = ["10-12-18", "10-13-18", "10-14-18"];

    let objs = [{"name":"One",
     "age": "4"},

     {"name":"Two",
     "age": "5"},

    {"name":"Three",
     "age": "9"}
    ]

    const result = objs.map((item, index) => {
        item.Date = dates[index];
        return item;
    });

console.log(result);

【讨论】:

  • 顺便说一句,在这里使用map 是完全没有必要的,因为您正在更改原始对象,所以一个简单的forEach 就可以了。 console.log(objs); 看看我在说什么。
【解决方案3】:
const result = data.map(({ name, age }, index) => ({ name, age, date: dates[index] }));

只需将数组映射到结果。

【讨论】:

    【解决方案4】:

    在 TS 中,你可以像下面这样..

    var data = [{
        "name": "One",
        "age": "4"
      },
    
      {
        "name": "Two",
        "age": "5"
      },
    
      {
        "name": "Three",
        "age": "9"
      }
    ];
    
    var dates = ["10-12-18", "10-13-18", "10-14-18"];
    
    console.log(data.map((ob, i) => ({ ...ob,
      "Date": dates[i]
    })));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2020-04-17
      • 2022-07-06
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      相关资源
      最近更新 更多