拆分具有多个分隔符的字符串数组并存储在单独的数组中

时间:2017-09-22 00:33:44

标签: javascript arrays split

我有一个像

这样的Javascript对象
Object = { "ratio1" : "12+45*36",
                 "ratio2" : "34+45*16",
                  "ratio3" : "17+25"}

我试图将值分割为一个数组中+之前的值和一个数组中+之后的值。所以输出应该像

Array1= ["12" , "34" , "17"]
Array2 = ["45" , "36" , "45","16","25"].

要执行此操作,我正在迭代键并获取值,然后我再次遍历值数组我正在使用

拆分它
ratioArray.split("+");

这给了我[[“12”,“45 * 36”],[“34”,“45 * 16”],[“17”,“25”]]

现在我再次遍历所有三个数组并使用第二个分隔符进行拆分。是否有任何有效的方法来执行此操作,以便我可以减少这些迭代次数

3 个答案:

答案 0 :(得分:0)

var Object = {
    "ratio1": "12+45*36",
    "ratio2": "34+45*16",
    "ratio3": "17+25"
}

var Array1 = [],
    Array2 = [],
    temp;
for (var key in Object) {
    temp = Object[key].split('+');
    Array1.push(temp[0])
    temp = temp[1].split('*')
    for(var i = 0; i < temp.length; i++){
      Array2.push(temp[i])
    }
}

console.log('Array1:['+Array1[0]+','+Array1[1]+','+Array1[2]+']')
console.log('Array2:['+Array2[0]+','+Array2[1]+','+Array2[2]+','+Array2[3]+','+Array2[4]+']')

答案 1 :(得分:0)

你可以这样做。

&#13;
&#13;
object = {
  "ratio1": "12+45*36",
  "ratio2": "34+45*16",
  "ratio3": "17+25"
}

var array1 = [],
  array2 = [];

for (var key in object) {

  var _o = object[key].split("+");
  array1.push(_o[0]);

  _o[1].split("*").forEach(function(num) {
    array2.push(num);
  })

};

console.log("array 1", array1);
console.log("array 2", array2)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

&#13;
&#13;
const ratios = {
  "ratio1" : "12+45*36",
  "ratio2" : "34+45*16",
  "ratio3" : "17+25"
}


const nums = Object.keys(ratios)
  .map(key => ratios[key]
    .replace(/[+*]/g, '|')
    .split('|')
  )

const [ array1, array2, array3 ] = nums

document.querySelector('pre').innerText = 
  `array1 === [${array1}]\n` +
  `array2 === [${array2}]\n` +
  `array2 === [${array3}]\n`
&#13;
<pre />
&#13;
&#13;
&#13;