【问题标题】:How do i make every value of objects in a array as String如何将数组中对象的每个值都设为字符串
【发布时间】:2020-06-05 06:20:22
【问题描述】:

我有一个类似这样的对象数组

[{id:1, name: "alexander"},{id:2, name: "the great"}]

将所有键的值作为数组中的字符串的最佳方法是什么。所以结果应该是

[{id:"1", name: "alexander"},{id:"1", name: "the great"}]

注意:我的对象非常大,是数字和字符串的组合或 null,并且对象中的键没有永久索引。对象中的键可以按任何顺序出现。尽管所有对象的密钥都位于同一位置。所以想要的结果应该是数组中所有对象的所有值都是字符串。

【问题讨论】:

  • 您对对象或null/undefined 或日期实例有何期望?你试过什么?

标签: javascript arrays sorting ecmascript-6 filter


【解决方案1】:

使用Array.map() 迭代项目。在地图的回调中,解构对象,提取id 使用rest 语法来获取对象的其他属性。通过 String() 工厂将 id 转换为字符串,然后使用扩展语法重建对象。

注意:如果您期望nullundefined id,您可以使用Nullish coalescing operator (??) 来获取默认值。例如,String(id ?? '')

const arr = [{id:1, name: "alexander"},{id:2, name: "the great"}]

const result = arr.map(({ id, ...rest }) => ({ id: String(id ?? ''), ...rest })) 

console.log(result)

【讨论】:

    【解决方案2】:

    您可以使用Array forEach 方法。

    users.forEach(user => user.id = user.id.toString())
    

    其中users 是对象数组。

    你可以在这里试试:

    let users = [{id:1, name: "alexander"},{id:2, name: "the great"}];
    users.forEach(user => user.id = user.id.toString()); 
    console.log(users)

    【讨论】:

      【解决方案3】:

      您可以使用map 函数来迭代每个对象并将其保存在每个数组中。

      var list = [{ id: "1", name: "alexander" }, { id: "1", name: "the great" }]
      
      var namesValues = list.map((item) => {
        return item.name;
      });
      var idValues = list.map((item) => {
        return item.id;
      });
      
      console.log(namesValues);
      console.log(idValues);

      【讨论】:

        猜你喜欢
        • 2020-11-27
        • 1970-01-01
        • 2020-05-09
        • 2021-07-21
        • 1970-01-01
        • 1970-01-01
        • 2021-07-12
        • 2021-07-18
        • 1970-01-01
        相关资源
        最近更新 更多