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

文字列パターンは、少なくともいずれかの方法で一貫している必要があります。javascript の分割機能を使用し、共通に出現する単語で分割します (私たちは少なくともスペースと言います)。次に、 : をキーとしてそれらのそれぞれを分割し、必要な値をオブジェクトに取得する必要があります。それがあなたが待ち望んでいたものであることを願っています。

于 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 に答える
0

多分何かのような

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

配列を返し、配列をループします。

于 2012-12-12T16:55:55.170 に答える