[英]Loop through string get key and value using regex key matches Javascript
我有一個字符串
> var temp =
> "meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green),"
有關信息,此字符串由kibana自動生成(我通過url恢復)。
我的問題是:有任何解決方案從這個字符串中提取鍵和值,並在數組或對象中得到一個結果,如下所示:
> var result = {
> "alias" : "!n",
> "apply" : "!t",
> "disabled" : "!f",
> "key": "stockInfo.raw",
> "negate": "!f",
> "value": "green",
> }
謝謝
我想你正在搜索這樣的東西:
var meta = "meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green)," var result = {} meta.substr(0, meta.length - 2).substr(5).split(',').forEach(function(item) { var split = item && item.split(':') if (split.length) { result[split[0]] = split[1]; } }) console.log(result)
通過拆分字符串,
字符,然后通過拆分:
識別對象的key和value
與其他相同,但有一些es6語法:D
const result = document.getElementById("result"); const input = document.getElementById("input"); // string: data from url, return only the portion from the parenthesis const extract_meta_values = string => { const EXTRACTOR = /^meta\\(([^\\)]+)\\)/g; return EXTRACTOR.exec(string)[1]; } // string: is a string of key:values separated by a comma const meta_values_to_array_of_objects = string => string.split(',').map( tuple => { const [key, value] = tuple.split(':'); return { [key]: value }; }); const meta_values = extract_meta_values(input.value); const final = meta_values_to_array_of_objects(meta_values); // print out result.innerText = JSON.stringify(final, null, 2);
pre { display: block; border: 1px solid darkgray; }
<p> <input value="meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green)," id=input /> </p> <pre id=result></pre>
子串到括號內,用逗號分割,循環,用冒號分割並添加到對象。
var temp = "meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green)"; var t = {}; temp .substr(temp.indexOf("(") + 1, temp.indexOf(")") - temp.indexOf("(") - 1) .split(",") .forEach(function(a) { var b = a.split(":"); t[b[0]] = b[1]; }); console.log(t);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.