0

如果我有以下字符串:

mickey mouse WITH friend:goofy WITH pet:pluto

javascript中获取该字符串并将所有“键:值”对提取到某个对象变量中的最佳方法是什么?冒号是分隔符。尽管我可能无法保证 WITH 会在那里。

4

5 回答 5

1
myString.split(/\s+/).reduce(function(map, str) {
    var parts = str.split(":");
    if (parts.length > 1)
        map[parts.shift()] = parts.join(":");
    return map;
}, {});
于 2012-12-12T16:59:15.433 回答
1
var array = str.match(/\w+\:\w+/g);

然后使用 , 拆分数组中的每个项目":"以获取键值对。

这是代码:

function getObject(str) {
  var ar = str.match(/\w+\:\w+/g);
  var outObj = {};
  for (var i=0; i < ar.length; i++) {
    var item = ar[i];
    var s = item.split(":");
    outObj[s[0]] = s[1];
  }
  return outObj;  
}
于 2012-12-12T17:02:59.830 回答
0

也许像

"mickey WITH friend:goofy WITH pet:pluto".split(":")

它将返回数组,然后循环遍历数组。

于 2012-12-12T16:55:55.170 回答
0

字符串模式必须至少以一种或另一种方式保持一致。使用 javascript 的 split 函数并按共同出现的单词进行拆分(我们说空间 Atleast)然后您需要使用 : 作为键来拆分每个单词,并将所需的值放入一个对象中。希望那是你渴望的。

于 2012-12-12T17:01:08.190 回答
0

你可以这样做,例如:

    var myString = "mickey WITH friend:goofy WITH pet:pluto";

    function someName(str, separator) {
        var arr = str.split(" "),
            arr2 = [],
            obj = {};
        for(var i = 0, ilen = arr.length; i < ilen; i++) {
            if ( arr[i].indexOf(separator) !== -1 ) {
              arr2 = arr[i].split(separator);
              obj[arr2[0]] = arr2[1];
            }
        }
        return obj;
    }

    var x = someName(myString, ":");

    console.log(x);
于 2012-12-12T17:01:37.730 回答