在JavaScript中,字符串是类似数组的对象吗?

时间:2018-08-13 12:04:17

标签: javascript

JavaScript中的字符串具有length属性,例如数组,但是它们没有诸如forEach或reduce的方法。

是不是意味着字符串像对象一样是数组?

2 个答案:

答案 0 :(得分:2)

术语“类似数组”通常是指具有整数值.length属性以及相应地存储在整数键属性中的许多元素的对象,因此我们可以像数组一样通过索引访问它们。字符串肯定满足了这一要求。

否,字符串并不具有数组具有的所有方法。它们不是从Array.prototype继承的,它们不是真正的数组-它们只是类似于的数组。但是,您可以通过….split('')Array.from(…)来简单地将字符串转换为数组。

答案 1 :(得分:1)

根据文档,这些功能不存在(Documentation)。

但是您可以向String原型添加功能

// forEach function
String.prototype.forEach = function (f) {
  for (i=0; i < this.length; ++i) {
    f(this[i]);
  }
}


// reduce function
String.prototype.reduce = function (f, start) {
  result = (start == undefined) ? null : start
  for(i = 0; i < this.length; ++i) {
    result += f(this[i])
  }
  return result
}