当字符串中只有一个元素时,如何在jQuery中将字符串分割成数组

How to split a string into an array in jQuery when there is only one element in the string?

本文关键字:字符串 jQuery 数组 分割 有一个 元素      更新时间:2023-09-26

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

nodes = $("#" + model_id + "-" + node_class + "--" + "title").data("nodes").split(",")

当字符串中只有一个元素(没有逗号)时,变量"nodes"不会成为数组,而是一个常规变量。所以当我尝试遍历"nodes"中的每个元素时,如果原始字符串只包含一个元素,什么也不会发生。如果包含多个元素,则一切正常。

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

我试图声明"节点"作为一个数组,但是当我分配分割字符串时,它都是一样的。因为我使用"拆分"来赋值,所以我认为我不能使用"push"来向数组添加值。

我试着把方括号放在每一个地方,我想,例如:

[nodes] = $("#" + model_id + "-" + node_class + "--" + "title").data("nodes").split(",")

…但那没有用。

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

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

A)引用数组的变量是常规变量。B)这不是split的工作方式。split always返回一个数组。如果字符串中不存在分隔符,则结果数组的长度为一个元素。(Live proof)所以只要data返回一个字符串,nodes将被设置为一个数组。但是请注意,data并不总是返回字符串,因此data("nodes").split(",")可能会失败,错误是split不是函数,因为data可以返回null或对象以及string。如果你知道它将永远是一个字符串,因为你的应用程序逻辑,这很好,但如果是这样,nodes将永远是一个数组,这就是为什么我提到它。

回复下面的评论:迭代在单元素数组上工作得很好:http://jsbin.com/ehucop/2

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