在javascript中用字符串创建对象

时间:2016-08-26 15:10:35

标签: javascript oop

我有一个字符串:

var str = "username:joe_1987;password:123456;email:joe@mailmail.com;"

我可以(或者更确切地说)如何创建一个可以称之为参数的对象,例如:

alert(obj.password)并获取123456

5 个答案:

答案 0 :(得分:2)

我不是专家,但这样的事情应该有效:

string = 'username:joe_1987;password:123456;email:joe@mailmail.com;';

array = string.split(';');
object = {};

for(i=0;i<array.length;i++){
    if(array[i] !== ''){
        console.log(array[i]);
        object[array[i].split(':')[0]] = array[i].split(':')[1];
    }
}

console.log(object);

https://jsfiddle.net/oej2gznw/

答案 1 :(得分:2)

我建议拆分字符串中的分号,给你一个看起来像这样的数组:

["username:joe_1987", "password:123456", "email:joe@mailmail.com"]

然后,您可以将相同的想法应用于此数组的每个元素,然后创建该对象。我在下面扔了一个片段来解释:

var str = "username:joe_1987;password:123456;email:joe@mailmail.com;"

var splitBySemiColon = str.split(";");
splitBySemiColon.pop(); //Remove the last element because it will be ""

var obj = {};

for(elem in splitBySemiColon) {
    splitByColon = splitBySemiColon[elem].split(":");
    obj[splitByColon[0]] = splitByColon[1];
}

希望这有帮助!

编辑:为您提供了现场演示 - https://repl.it/CtK8

答案 2 :(得分:0)

IF 您确定所需的值不会有;:,您可以

var str = "username:joe_1987;password:123456;email:joe@mailmail.com;"
var obj = {};
str.split(';').forEach( function(segm) {
  if(segm.trim()) { // ignore empty string
    var spl = segm.split(':');
    obj[ spl[0] ] = spl[1];
  }
})

答案 3 :(得分:0)

使用此

 var str = "username:joe_1987;password:123456;email:joe@mailmail.com;"
    var data=str.split(';');
    var obj={};
    for(var i=0;i<data.length;i++){
      var propArray=data[i].split(':');
       obj[propArray[0]]=propArray[1]
    }

答案 4 :(得分:0)

没有直道。只需解析该字符串。例如:

var str = "username:joe_1987;password:123456;email:joe@mailmail.com;"

var arr = str.split(';');
var o = {};
for (a in arr) {
  if (arr[a]) {
    o[arr[a].split(':')[0]]=arr[a].split(':')[1];
  }
}

console.log(o);