【问题标题】:Convert array of strings to objects and assign specific key将字符串数组转换为对象并分配特定键
【发布时间】:2018-02-01 00:43:02
【问题描述】:

我正在尝试转换以下字符串数组:

["one", "two", "three"]

到具有特定键(例如数字)的 JSON 对象数组,如下所示:

[
    {
        number: 'one'
    },
    {
        number: 'two'
    },
    {
        number: 'three'
    }
]

【问题讨论】:

  • Convert array to JSON的可能重复
  • 这只是一个对象数组,而不是 JSON。迭代数组,然后.push({number:item});

标签: javascript


【解决方案1】:

只需使用Array.prototype.map() 遍历array 中的所有元素并创建一个新元素,同时将它们转换为具有您需要的结构的object

您可以使用ES6 以更少的代码行来做到这一点,但我也提供了一个带有 ES5 的版本:

// ES6:

const arrayOfObjectsES6 = ["one", "two", "three"].map(number => ({ number }));

console.log(arrayOfObjectsES6);

// ES5:

var listOfObjectsES5 = ["one", "two", "three"].map(function(value) {
 return { number: value };
});

console.log(listOfObjectsES5);

然后,您可以使用 JSON.stringify() 来获取它的 JSON string 表示:

JSON.stringify(arrayOfObjectsES6);

如果您希望能够使用 "number" 以外的键重用此功能:

function getArrayOfObjectsES6(values, key) {
  return values.map(value => ({ [key]: value }))
}

console.log( JSON.stringify(getArrayOfObjectsES6(["one", "two", "three"], 'ES6')) );

function getArrayOfObjectsES5(values, key) {
  return values.map(function(value) {
    var obj = {};
    
    obj[key] = value;
    
    return obj;  
  });
}

console.log( JSON.stringify(getArrayOfObjectsES6(["one", "two", "three"], 'ES5')) );

请注意,您也可以使用普通的for,但我认为map() 是这里更简洁、最简洁的选项。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 2023-02-15
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多