2017-09-22 49 views
0

我有這樣串具有多個分隔符,並存儲在單獨的陣列的分割陣列

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

一個Javascript對象我試圖在一個陣列分裂像在一個陣列+後+之前的值和值的值。所以輸出應該像

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

要執行此,我通過按鍵迭代和獲取價值第一,然後我通過數值數組再迭代我使用

ratioArray.split("+"); 

這給了分裂它我[[「12」,「45 * 36」,[「34」,「45 * 16」],[「17」,「25」]]

現在我再次遍歷所有三個數組並使用第二個分隔符分割。有沒有執行此任何有效的方式讓我可以減少這些多次迭代

+0

這是正確的方式.. – StefansArya

+0

其實我在這裏停留。我無法用結果數組執行分割:( – Karthi

+0

'str.split(/ [+ *] /)' – Will

回答

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]+']')

+0

這就像一個魅力,非常感謝你,你能幫我做最後的合併單個陣列爲動態 – Karthi

+0

@Karthi你是什麼意思?解釋 – alen

0

你可以做這樣的事情。

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)

0

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`
<pre />