我在javascript中调用函数有这些结果:
(1, 00), (2, 10), (3, 01), (4, 11)
我想以数组或json格式分配,结果如下:
[{id:1, number: 00},{id:2, number: 10},{id:3, number: 01},{id:4, number: 11}]
或任何会导致数组长度为4的任何东西
这可能吗?请帮忙。谢谢:))
答案 0 :(得分:3)
使用正则表达式获取模式并根据匹配的内容生成数组。
var data = '(1, 00), (2, 10), (3, 01), (4, 11)';
// regex to match the pattern
var reg = /\((\d+),\s?(\d+)\)/g,
m;
// array for result
var res = [];
// iterate over each match
while (m = reg.exec(data)) {
// generate and push the object
res.push({
id: m[1],
number: m[2]
});
}
console.log(res);

或者拆分字符串。
var data = '(1, 00), (2, 10), (3, 01), (4, 11)';
var res = data
// remove the last and first char
.slice(1, -1)
// split the string
.split(/\),\s?\(/)
// iterate over the array to generate result
.map(function(v) {
// split the string
var val = v.split(/,\s?/);
// generate the array element
return {
id: val[0],
number: val[1]
}
})
console.log(res);

答案 1 :(得分:0)
除了其他拆分解决方案之外,您可以使用String#replace
并替换/添加有效JSON字符串的所需部分,并使用JSON.parse
解析对象的字符串,您需要
var data = '(1, 00), (2, 10), (3, 01), (4, 11)',
json = data.replace(/\(/g, '{"id":').replace(/,\s?(?=\d)/g, ',"number":"').replace(/\)/g, '"}'),
object = JSON.parse('[' + json + ']');
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }