将字符串数组转换为对象数组
Converting an array of strings into an array of objects
我有一个字符串数组:
["14: London", "15: Manchester", "16: Bristol"]
我需要将其更改为如下所示的对象数组:
[{14: "London"}, {15: "Manchester"}, {16: "Bristol"}]
我认为解决此问题的最佳方法是首先遍历数组并拆分每个字符串,然后将其转换为对象,然后再推回数组。
虽然我真的不知道如何让它工作,所以任何帮助将不胜感激。
感谢您的宝贵时间
使用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);
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))
可以贴图
var arr = ["14: London", "15: Manchester", "16: Bristol"];
var obj = arr.map(d => {
var split = d.split(": ");
return {
[split[0]] : split[1]
}
});
你也可以这样做,这样你就可以知道你的对象何时已经有了一个 key/value 对和相同的键:
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!");
}
}
我有一个字符串数组:
["14: London", "15: Manchester", "16: Bristol"]
我需要将其更改为如下所示的对象数组:
[{14: "London"}, {15: "Manchester"}, {16: "Bristol"}]
我认为解决此问题的最佳方法是首先遍历数组并拆分每个字符串,然后将其转换为对象,然后再推回数组。
虽然我真的不知道如何让它工作,所以任何帮助将不胜感激。
感谢您的宝贵时间
使用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);
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))
可以贴图
var arr = ["14: London", "15: Manchester", "16: Bristol"];
var obj = arr.map(d => {
var split = d.split(": ");
return {
[split[0]] : split[1]
}
});
你也可以这样做,这样你就可以知道你的对象何时已经有了一个 key/value 对和相同的键:
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!");
}
}