如何将逗号分隔的字符串转换为数组?

IT技术 javascript string split
2021-01-16 12:32:44

我有一个逗号分隔的字符串,我想将它转换成一个数组,这样我就可以遍历它。

有没有内置的东西可以做到这一点?

例如,我有这个字符串

var str = "January,February,March,April,May,June,July,August,September,October,November,December";

现在我想用逗号分割它,然后将它存储在一个数组中。

6个回答
var array = string.split(',');

MDN 参考,主要有助于limit参数可能出现的意外行为(提示:结果"a,b,c".split(",", 2)["a", "b"],而不是["a", "b,c"]。)

@MichaelShopsin 和 All,拆分函数不适用于 IE11,因为它说无法获取未定义或空引用的属性“拆分”。
2021-03-19 12:32:44
虽然split将正常工作,如果你确信你有元素array,如果你从服务器/数据库期望的数据,你会遇到麻烦,因为''.split(',')有一个length === 1IE浏览器:''.split(',') === ['']
2021-03-20 12:32:44
简短而甜蜜,很高兴看到 JavaScriptstring具有 Java 的一些丰富性String
2021-03-23 12:32:44
@DLV 听起来像是一个新问题,也许您应该在查看 StackOverflow 上已有的 IE 问题后询问。
2021-03-27 12:32:44
支持所有类型字符串的最佳实践。见这里stackoverflow.com/a/32657055/2632619
2021-04-07 12:32:44

注意您是否针对整数,例如 1、2、3、4、5。如果您打算在拆分字符串后将数组元素用作整数而不是字符串,请考虑将它们转换为整数。

var str = "1,2,3,4,5,6";
var temp = new Array();
// This will return an array with strings "1", "2", etc.
temp = str.split(",");

添加这样的循环,

for (a in temp ) {
    temp[a] = parseInt(temp[a], 10); // Explicitly include base as per Álvaro's comment
}

将返回一个包含整数而不是字符串的数组。

map函数可用于在一行中进行整数解析:str.split(',').map(parseInt)
2021-03-10 12:32:44
如果可以的话,我会更多地支持 Alvaro 的评论。不久前我学到了这一课,并且永远不会忘记。
2021-03-14 12:32:44
+1 这个例子更清楚,证明字符串不是静态对象,而是字符串实际上是变量。
2021-03-21 12:32:44
这不是最有效的解决方案。根据我在 Chrome 49 下的实验。JSON.parse('[' + str + ']') 比这个解决方案快 40%。
2021-03-25 12:32:44
请注意 parseInt() 会尝试猜测基数,除非您显式设置它,否则在处理前导零 ( "001,002,003...")时可能会导致意外结果比较parseInt('010')parseInt('010', 10)
2021-04-08 12:32:44

嗯,恕我直言,拆分是危险的,因为字符串总是可以包含逗号。请注意以下事项:

var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');

那么你会如何解释呢?希望结果是什么?一个数组:

['a', 'b', 'c', 'd', 'e', 'f', 'g', '\'', '\''] or
['a', 'b', 'c', 'd', 'e', 'f', 'g', ',']

即使您转义逗号,您也会遇到问题。

我很快就一起摆弄了这个:

(function($) {
    $.extend({
        splitAttrString: function(theStr) {
            var attrs = [];

            var RefString = function(s) {
                this.value = s;
            };
            RefString.prototype.toString = function() {
                return this.value;
            };
            RefString.prototype.charAt = String.prototype.charAt;
            var data = new RefString(theStr);

            var getBlock = function(endChr, restString) {
                var block = '';
                var currChr = '';
                while ((currChr != endChr) && (restString.value !== '')) {
                    if (/'|"/.test(currChr)) {
                        block = $.trim(block) + getBlock(currChr, restString);
                    }
                    else if (/\{/.test(currChr)) {
                        block = $.trim(block) + getBlock('}', restString);
                    }
                    else if (/\[/.test(currChr)) {
                        block = $.trim(block) + getBlock(']', restString);
                    }
                    else {
                        block += currChr;
                    }
                    currChr = restString.charAt(0);
                    restString.value = restString.value.slice(1);
                }
                return $.trim(block);
            };

            do {
                var attr = getBlock(',', data);
                attrs.push(attr);
            }
            while (data.value !== '')
                ;
            return attrs;
        }
    });
})(jQuery);
这对数字也很有效,我们不必像下面的另一个答案中提到的那样为它们运行单独的 parseInt 循环。这是真正的深刻思考。非常感谢,我认为这是最好的答案!
2021-03-25 12:32:44

split() 方法用于将字符串拆分为子字符串数组,并返回新数组。

var array = string.split(',');
对,那是正确的。结果数组就像你提到的那样。
2021-03-15 12:32:44
您的回答对我有用,但是我的新阵列并没有取代旧阵列。你能帮助我吗? var sampleTags = ['vinita@itsabacus.com']; console.log(sampleTags); $("#order_id").on("change", function() { var order_id = document.getElementById('order_id').value; $.ajax({url: "model/getUserMailIds.php",data:{order_id:order_id},type:'POST', success: function(result){ alert(result); var sampleTags = result.split(',');; console.log(sampleTags); }}); });
2021-04-07 12:32:44
结果会怎样?例如,如果我有 var a = "hello,world,baby"; 和 var array = a.split(','); --> 我的数组会是这样的:array = ["hello","world","baby"]; ??
2021-04-08 12:32:44

请注意以下几点:

var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);

将警报 1