使用javascript从文本字符串创建数组,并根据需要操作数据
我有文本字符串paten(_-code:value,_-code:value,_-code:value,_-code:value,) 它可以是这样的_cvgx12:volvo,_ccc325:hello我的名字是andrius,_asc789:sport,_code:这是文本字符串的示例 我需要从这个字符串创建数组。在数组中,我只希望包含值 myarray=[“值”、“值”、“值”、“值”、“值”、] 价值可以是任何东西,例如 myarray=[“沃尔沃”,“你好,我的名字是安德里奥斯”,“运动”,“价值”,“萨克斯溢出”,] 我正在尝试这样的方法 拆分ext到数组myarray=mytext.Split(“”);//我不认为这个值是正确的 另外,我正在删除代码部分,如下所示:使用javascript从文本字符串创建数组,并根据需要操作数据,javascript,arrays,Javascript,Arrays,我有文本字符串paten(_-code:value,_-code:value,_-code:value,_-code:value,) 它可以是这样的_cvgx12:volvo,_ccc325:hello我的名字是andrius,_asc789:sport,_code:这是文本字符串的示例 我需要从这个字符串创建数组。在数组中,我只希望包含值 myarray=[“值”、“值”、“值”、“值”、“值”、] 价值可以是任何东西,例如 myarray=[“沃尔沃”,“你好,我的名字是安德里奥斯”,“运动
filtered = myarray.filter(function(el, index) {
return index % 2 === 1;
});
我正在获取数组,但我不能在单词之间使用空格,这可以做到:
var pattern = {
"_cvgx12": "volvo",
"_ccc325": "hello my name is andrius",
"_asc789": "sport",
"_code": "This is example of text string"
}
var myArray = [];
for(var prop in pattern){
myArray.push(pattern[prop]);
}
非常简单,非常粗糙,但有效根据您希望的严格程度,以下是一个起点:
str
.replace(/^\(|\)$/) // remove parens
.split(',') // split on commas
.map(function(entry) { // then for each entry
return entry.split(':')[1]; // split on colon and return 2nd half
})
;
也许应该添加一些修剪。您需要以某种方式解析字符串。你到底有多喜欢这个取决于你:我不知道你想要的确切语法,但取决于你怎么做,这可能非常简单,也可能相当复杂。我做出以下假设和推论:
- 代码-值对之间的实际分隔符是逗号(“,”),代码及其值之间的实际分隔符是冒号(:”)
- 代码不能包含冒号,但值可以包含冒号
- 代码不需要以下划线开头(尽管它们可以)
- 没有办法避开冒号和逗号
- 代码和值的前导和尾随空格将被忽略,但代码和值中的空格将被保留
- 将忽略空项(例如,由字符串末尾的悬空“,”引起的)
- 允许具有相同代码的多个项目
function parse(input) {
return String(input).split(',').reduce(function (result, item) {
var parts;
if (item.trim().length > 0) {
parts = item.split(':');
result.push(parts.slice(1).join(':').trim());
}
return result;
}, []);
};
第一次拆分(第2行)得到代码-值对。然后,我们从第9行创建的空数组开始,对成对数组进行reduce(),以获得最终结果
第4行中对item.trim().length的检查确保我们忽略空项(如由悬空逗号创建的项)
在第5行中,我们在“:”上分开,但在第6行中,我们在第一个部分之后重新连接所有部分。这确保冒号中的任何值都保留在字符串中。如果我们不这样做,那么在第一个冒号之后的任何东西都会丢失
最后,推入式第6行确保分割的项目进入数组
如果您决定需要返回不同类型的对象,您可以通过修改传递给
reduce
的函数和值来添加语言标记来实现。“Sackoverflow”
让我发笑,很好。那么您到底是在哪里被卡住的?你自己的尝试是如何成功的,还是失败的?出了什么问题?我认为模式是一个文本,而不是一个对象。哦,如果是这样的话,那么它是正则表达式的工作,为了使其工作,需要应用严格的规则。我会让OP澄清这一点。。