我发现在lodash中,数组方法也适用于字符串。例如:
> _.last('abc')
'c'
> _.indexOf('abc', 'x')
-1
这是一种标准行为吗?可以依赖吗?据我所知,文档没有说明任何内容。
请注意,上述方法只是示例。我更倾向于知道lodash是否期望其数组方法用于字符串。我需要编写生产代码,我不能依赖有效的东西,但标准文档没有提及,承认或保证。
答案 0 :(得分:3)
您可以认为String基本上是一个字符数组。它们具有您在阵列上找到的某些属性和功能,例如.length
和.indexOf()
。
根据.last 和 .indexOf的lodash来源,他们使用.length
属性来确定最后一个字符或索引数组中的一个字符。
由于lodash使用括号表示法(str[0]
)来查找项目的最后一个字符/索引,因此这些实现虽然可以在大多数情况下使用Strings,因为它们具有类似Array的特性,但并不适用。用数组。这是not universally supported,例如对于IE7,这就是为了访问字符串的给定索引处的字符而存在charAt
方法的原因。
你可以本地做这两件事:
var str = 'mystring';
str.charAt(str.length - 1); // 'g'
var str = 'mystring';
str.indexOf('y') // 1`