为什么JavaScript split()方法即使没有分隔符也会返回数组?

为什么JavaScript split()方法即使没有分隔符也会返回数组?,javascript,html,arrays,Javascript,Html,Arrays,我有一个html元素的网格,每个元素上都有一个数据类别属性 某些数据类别属性有多个值,用逗号分隔:数据类别=类别2,类别3 有些具有单个值:数据类别=类别1,不带分隔符 我使用这个简单的脚本按类别过滤元素: $“类别选择器”。关于“更改”,函数{ var$item=$'items-container'.find'.item', 当前=$this.val; 如果当前==“全部”{ $item.fadeIn200; }否则{ $item.hide200; $item.eachfunction{ v

我有一个html元素的网格,每个元素上都有一个数据类别属性

某些数据类别属性有多个值,用逗号分隔:数据类别=类别2,类别3

有些具有单个值:数据类别=类别1,不带分隔符

我使用这个简单的脚本按类别过滤元素:

$“类别选择器”。关于“更改”,函数{ var$item=$'items-container'.find'.item', 当前=$this.val; 如果当前==“全部”{ $item.fadeIn200; }否则{ $item.hide200; $item.eachfunction{ var category=$this.data'category'.split','; //console.logcategory; 如果$0.1当前,类别>=0{ $this.fadeIn200; } }; } }; .posts网格{ 边缘顶部:25px; } .posts网格>[class*='col-']{ 显示器:flex; 弯曲方向:立柱; 边缘底部:25px; } .posts.grid.block{ 背景:fff; 边框顶部:1px实心D5D5; 盒影:0 1px 3px rgba0,0,0,0.12,0 1px 2px rgba0,0,0,0.11; } .p栏{ 保证金:0; 文本对齐:居中; } .posts.grid.block{ 柔性生长:1; 显示器:flex; 证明内容:中心; 弯曲方向:立柱; } .posts网格。阅读更多信息{ 页边顶部:自动; } @介质最大宽度:767px{ .集装箱{ 最大宽度:100%; } } @介质最大宽度:575px{ .集装箱{ 最大宽度:100%; 左侧填充:0; 右边填充:0; } .posts网格>[class*='col-']{ 左侧填充:5px; 右侧填充:5px; } } 选择类别 第一类 第2类 第3类 一,

二,

二,

三,

一,

三,

一,

二,

一,

一,

一,

一,

一,

二,

二,

三,

一,

从文件中

它说:

如果未找到分隔符或省略了分隔符,则数组包含一个由整个字符串组成的元素

因此,split将始终返回一个数组。 你的分割法一切都很好

split方法就是这样设计的。从文件中: 找到分隔符后,将从字符串中删除分隔符,并在数组中返回子字符串。如果未找到分隔符或省略了分隔符,则数组包含一个由整个字符串组成的元素

如果您想要一个行为不同的方法,您可以在split之上编写一个包装器,当字符串没有分隔符时,它将返回其他内容您希望它返回什么

您的过滤器看起来仍然很好-您正在检查类别的名称是否在数组中;如果数组只包含一个与类别名称相对应的元素,则会找到它;如果数组由一个空字符串元素组成,则找不到它-这两种行为都是正确的。
因为它就是这样的。在显示之前检查字符串是否包含分隔符。或者在拆分后检查数组大小。如果API行为根据返回的元素数量而改变,则每次使用时都必须检查返回类型。Split返回一个数组。空,一个元素,n个元素。可靠、可预测和一致。