我正在尝试在 JavaScript 中从另一个数组动态创建一个数组。 我有一个字符串,它是一个数学文字表达式,如下所示 '2a + 3b + 4a + 5c':我只想将其拆分为一个数组,仅包含数字的文字部分(例如 'a,b,a,c ')。
我尝试使用以下代码来执行此操作:
var expression = '2a + 3b + 4a + 5c';
var NumbersArray = expression.split(' + '); /* NumbersArray = 2a,3b,4a,5c */
alert('So far it's working!');
var LettersArray = new Array();
for (var i = 0; i < NumbersArray.length; i++) {
eval('var LettersArray[' + i + '] = NumbersArray[' + i + '].replace(/[0-9]/g,"");');
alert(eval('LettersArray[' + i + ']'));
}
但是这不起作用! 我该如何修复它?
最佳答案
这里有很多错误,尝试评论我的所有修复:
var expression = '2a + 3b + 4a + 5c';
var NumbersArray = expression.split(' + '); /* NumbersArray = 2a,3b,4a,5c */
//using single quotes inside single quotes doesn't work without escaping, try double quotes instead
alert("So far it's working!");
//use array literals [], not new Array() unless you need it
var LettersArray = [];
for (var i = 0; i < NumbersArray.length; i++) {
//why is eval used here? and why are you using var to re-declare LettersArray?
//eval('var LettersArray[' + i + '] = NumbersArray[' + i + '].replace(/[0-9]/g,"");');
//alert(eval('LettersArray[' + i + ']'));
//no need for eval, just access array indexes
LettersArray[i] = NumbersArray[i].replace(/[0-9]/g, '');
alert(LettersArray[i]);
}
工作示例:http://jsfiddle.net/FERj5/
完成同样事情的更快方法是:
var expression = '2a + 3b + 4a + 5c';
var letters = expression.replace(/\d+/g, '').split(' + ');
//now letters == ['a', 'b', 'a', 'c']
关于JavaScript:动态创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18407934/