如何将一组数组(字符串格式)推入数组?

时间:2019-04-15 19:36:32

标签: javascript jquery

我从数据库中以[52,16,135],[54,16,140],[22,16,140]的格式获取一组数组,我需要将其所有元素分别推入新数组,但是看起来像我的代码将它们作为数组添加到代码中一样

enter image description here

但是我需要的是

[
    "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');

6 个答案:

答案 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)

如果浏览器不支持flattemplate 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);