Javascript 剥离部分数组值并创建新数组



我有一个看起来像这样的数组:

["text1[483]", "text 2[411]", "text 3[560]", "text[484]"]

我需要做的是从这个数组的值创建大约我需要创建 2 个新数组。

一个数组将包含文本和 [],里面的任何内容都应该从中消失。

另一个数组将只包含没有 []

的数字

因此,新数组将如下所示:

文本数组:

["text1", "text 2", "text 3", "text"]

数字数组:

["483", "411", "560", "484"]

我该怎么做?

var initialArray = ["text1[483]", "text 2[411]", "text 3[560]", "text[484]"];
    
var texts = initialArray.map(function(v){  return v.split('[')[0]} );
console.log(texts);
// ["text1", "text 2", "text 3", "text"]
    
var numbers = initialArray.map(function(v){  return +v.match(/[(d+)]/)[1]} );
console.log(numbers);
// [483, 411, 560, 484]

您可以

根据[进行拆分,并删除字符串的最后一个字符]

var arr = ["text1[483]", "text 2[411]", "text 3[560]", "text[484]"];
var firstArray = [];
var secondArray = [];
arr.forEach(function(item) {
  var split = item.split("[");
  firstArray.push(split[0]);
  secondArray.push(split[1].slice(0,-1));
});
console.log(JSON.stringify(firstArray));
console.log(JSON.stringify(secondArray));

您可以使用正则表达式并将所需的部分分开。

var array = ["text1[483]", "text 2[411]", "text 3[560]", "text[484]"],
    texts = [],
    numbers = [];
array.forEach(function (a) {
    var m = a.match(/^(.*)[(.*)]$/);
    texts.push(m[1]);
    numbers.push(m[2]);    
});
console.log(texts);
console.log(numbers);
.as-console-wrapper { max-height: 100% !important; top: 0; }

最新更新