我有一个像
这样的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”]]
现在我再次遍历所有三个数组并使用第二个分隔符进行拆分。是否有任何有效的方法来执行此操作,以便我可以减少这些迭代次数
答案 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)
你可以这样做。
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;
答案 2 :(得分: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`
&#13;
<pre />
&#13;