我有一个字符串数组:
[{14: "London"}, {15: "Manchester"}, {16: "Bristol"}]
我需要将其更改为一个对象数组,如下所示:
{{1}}
我认为最好的解决方法是首先迭代数组并拆分每个字符串,然后在推回数组之前将其转换为对象。
我无法确定如何让它发挥作用,所以任何帮助都会非常感激。
感谢您的时间
答案 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!");
}
}