我从数据库中以[52,16,135],[54,16,140],[22,16,140]
的格式获取一组数组,我需要将其所有元素分别推入新数组,但是看起来像我的代码将它们作为数组添加到代码中一样
但是我需要的是
[
"True",
"52",
"16",
"135",
"54",
"16",
"140",
"22",
"16",
"140",
"Other Value"
]
var str = '[52,16,135],[54,16,140],[22,16,140]';
var arr =[];
arr.push('True');
arr.push(str.replace(/\[/g, "").replace(/\]/g, "").split(','));
arr.push('Other Value');
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
var str = '[52,16,135],[54,16,140],[22,16,140]';
var arr =[];
arr.push('True');
arr.push(str.replace(/\[/g, "").replace(/\]/g, "").split(','));
arr.push('Other Value');
答案 0 :(得分:1)
只需将.flat()方法添加到结果中即可。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat enter code here
var str = '[52,16,135],[54,16,140],[22,16,140]';
var arr =[];
arr.push('True');
arr.push(str.replace(/\[/g, "").replace(/\]/g, "").split(','));
arr.push('Other Value');
console.log(arr.flat());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
答案 1 :(得分:1)
使用Array.push()
方法内的spread syntax扩展由split()
生成的数组的所有元素作为push()
的参数,这是对代码的一种简单解决方案方法。另外,您可以使用一个replace()
句子replace(/[[\]]/g, "")
来代替两个句子。
var str = '[52,16,135],[54,16,140],[22,16,140]';
var arr =[];
arr.push('True');
arr.push(...str.replace(/[[\]]/g, "").split(','));
arr.push('Other Value');
console.log(arr);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
答案 2 :(得分:1)
您快到了。只是不进行推送而是进行串联。
var str = '[52,16,135],[54,16,140],[22,16,140]';
var innerArr = str.replace(/\[/g, "").replace(/\]/g, "").split(',');
var arr = ["True"].concat(innerArr).concat(["Other Value"]);
console.log(arr);
答案 3 :(得分:1)
除了使用replace
之外,您还可以在字符串周围添加[]
来创建有效的2D数组JSON。然后使用parse
字符串并使用flat
。
var str = '[52,16,135],[54,16,140],[22,16,140]';
const newArray = JSON.parse(`[${str}]`).flat();
console.log(newArray)
如果浏览器不支持flat
和template literals,则为ES5解决方案:
var str = '[52,16,135],[54,16,140],[22,16,140]';
var parsed = JSON.parse('[' + str + ']'),
newArray = [].concat.apply([], parsed);
console.log(newArray)
答案 4 :(得分:0)
好吧,我有两个可以想到的即时选择:
第一个选项:ES6 spread syntax
const str = '[52,16,135],[54,16,140],[22,16,140]';
const strArr = str.replace(/\[/g, "").replace(/\]/g, "").split(',');
const arr = ['True', ...strArr, 'Other Value'];
console.log(arr);
第二个选项:Array.prototype.concat()
const str = '[52,16,135],[54,16,140],[22,16,140]';
const strArr = str.replace(/\[/g, "").replace(/\]/g, "").split(',');
let arr = [];
arr.push('True');
arr = arr.concat(strArr);
arr.push('Other Value');
console.log(arr);
如果可以的话,我会选择选项1。
干杯:)
答案 5 :(得分:0)
尝试
['True', ...str.match(/\d+/g), 'Other Value'];
var str = '[52,16,135],[54,16,140],[22,16,140]';
var arr = ['True',...str.match(/\d+/g),'Other Value'];
console.log(arr);