次の文字列がある場合:
mickey mouse WITH friend:goofy WITH pet:pluto
その文字列を取得し、すべての「キー:値」のペアをオブジェクト変数に抽出するためのjavascriptの最良の方法は何ですか? コロンはセパレータです。WITH が存在することを保証できる場合とできない場合がありますが。
次の文字列がある場合:
mickey mouse WITH friend:goofy WITH pet:pluto
その文字列を取得し、すべての「キー:値」のペアをオブジェクト変数に抽出するためのjavascriptの最良の方法は何ですか? コロンはセパレータです。WITH が存在することを保証できる場合とできない場合がありますが。
myString.split(/\s+/).reduce(function(map, str) {
var parts = str.split(":");
if (parts.length > 1)
map[parts.shift()] = parts.join(":");
return map;
}, {});
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;
}
文字列パターンは、少なくともいずれかの方法で一貫している必要があります。javascript の分割機能を使用し、共通に出現する単語で分割します (私たちは少なくともスペースと言います)。次に、 : をキーとしてそれらのそれぞれを分割し、必要な値をオブジェクトに取得する必要があります。それがあなたが待ち望んでいたものであることを願っています。
たとえば、次のようにすることができます。
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);
多分何かのような
"mickey WITH friend:goofy WITH pet:pluto".split(":")
配列を返し、配列をループします。