JavaScript:动态创建数组

标签 javascript arrays

我正在尝试在 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/

相关文章:

javascript - 为什么选择 MDC 选择 :change is not working with javascript for material design

对象数组中的javascript排序元素

java - JFrame 没有输出?

php - 检查多维数组中的键值对

javascript - android genymotion 的react-native 中的错误意味着什么?

javascript - react 保持数据同步

javascript - 修改 vis.js 网络中选定的特定节点的样式

java - 将一个 int 和 string 数组合并到第三个数组中

java - 列表比较算法复杂度的改进

javascript - 改变元素高度的CSS动画