将字符串数组转换为对象数组

时间:2016-08-16 15:30:14

标签: javascript arrays javascript-objects

我有一个字符串数组:

[{14: "London"}, {15: "Manchester"}, {16: "Bristol"}]

我需要将其更改为一个对象数组,如下所示:

{{1}}

我认为最好的解决方法是首先迭代数组并拆分每个字符串,然后在推回数组之前将其转换为对象。

我无法确定如何让它发挥作用,所以任何帮助都会非常感激。

感谢您的时间

4 个答案:

答案 0 :(得分:4)

使用 Array#map 方法生成数组。



var arr = ["14: London", "15: Manchester", "16: Bristol"];

// iterate over the array
var res = arr.map(function(v) {
  // split the value based on `:`
  var splitArr = v.split(':'),
    // initialize an object  
    obj = {};
  //define the property value
  obj[splitArr[0].trim()] = splitArr[1].trim();
  // return the generated object
  return obj;
})

console.log(res);




答案 1 :(得分:2)

你可以映射

var arr = ["14: London", "15: Manchester", "16: Bristol"];

var obj = arr.map(d => {
    var split = d.split(": ");
  return {
    [split[0]] : split[1]
  }
});

答案 2 :(得分:1)

var arr = ["14: London", "15: Manchester", "16: Bristol"];

var makeObjectFromArray = function(arr) {

  if (Object.prototype.toString.call(arr) !== '[object Array]') return arr;

  var objects = [];

  for (var i = 0, length = arr.length; i < length; i++) {

    var obj = arr[i].split(":");
    var temp = {};

    var key = (typeof obj[1] === 'string') ? obj[0].trim() : obj[0];
    var value = (typeof obj[1] === 'string') ? obj[1].trim() : obj[1];

    temp[key] = value;
    objects.push(temp);
  }
  return objects;
};

console.log(makeObjectFromArray(arr))

答案 3 :(得分:1)

你也可以这样做,这样你就可以知道你的对象何时已经拥有一个具有相同键的键/值对:

    var testArray = ["14: London", "14: London", "15: Manchester", "16: Bristol"];
    var testObj = {};
    var length = testArray.length;
    for ( var i = 0; i < length; i++ ) {
        var newTestArray = testArray[i].split(":");
        if ( testObj[newTestArray[0]] === undefined ) {
            testObj[newTestArray[0]] = newTestArray[1];
        } else {
            console.log("key: " + newTestArray[0] + " already exists!");
        }
    }