如果字符串中只有一个元素,如何在jQuery中将字符串拆分为数组?

Joh*_*vda 0 javascript jquery

我有这个代码,它接受一个字符串并将其拆分为一个数组:

nodes = $("#" + model_id + "-" + node_class + "--" + "title").data("nodes").split(",")
Run Code Online (Sandbox Code Playgroud)

当字符串中只有一个元素(没有逗号)时,变量"nodes"不会成为数组,而是常规变量.因此,当我尝试迭代"节点"中的每个元素时,如果原始字符串仅包含一个元素,则不会发生任何事情.如果它有几个元素,一切都OK.

$.each(nodes, function (id, node_id) {
  if ($("#" + model_id + "-" + node_class + "-" + node_id + "-" + "chkbx").is(":checked")) {
    counter ++
  }
})
Run Code Online (Sandbox Code Playgroud)

我试图将"nodes"声明为一个数组,但是当我分配splitted字符串时,它们都是一样的.由于我使用"split"来赋值,我认为我不能使用"push"将值附加到数组中.

我想,我试图把方括号放在任何地方,就像这样:

[nodes] = $("#" + model_id + "-" + node_class + "--" + "title").data("nodes").split(",")
Run Code Online (Sandbox Code Playgroud)

......但这没有帮助.

有没有解决方案,除了检查"节点"是否是一个数组,然后编写不同的代码来处理这两个选项?

T.J*_*der 5

当字符串中只有一个元素(没有逗号)时,变量"nodes"不会成为数组,而是常规变量.

A)引用数组变量常规变量.B)那不是多么split有效.split 总是返回一个数组.如果字符串中不存在分隔符,则生成的数组长度为一个元素.(实时证明)所以只要data返回一个字符串,nodes就会被设置为一个数组.但是请注意,这data不能总是返回一个字符串,因此data("nodes").split(",")可能会失败,该错误split是不是一个函数,因为data可以返回null作为或对象,以及string.如果你知道它因为你的应用程序逻辑而永远是一个字符串,那很好,但如果是这样的话,nodes总是一个数组,这就是为什么我提到它.

重新评论如下:迭代在单元​​素数组上运行得很好:http://jsbin.com/ehucop/2

我怀疑你需要在你的浏览器中查看JavaScript控制台,我敢打赌你会发现一个错误,这会阻止你的迭代代码运行.