Строки в JavaScript имеют свойство длины, например массивы, но у них нет таких методов, как forEach или reduce.
Допустим ли это, что строки - это массивы, подобные объектам?
Термин «подобный массиву» обычно относится к объекту, имеющему свойство целочисленного значения .length и, соответственно, к множеству элементов, хранящихся в свойствах с целыми ключами, так что мы можем получить к ним доступ по индексу, подобному массиву. Строки, безусловно, удовлетворяют этому требованию.
Нет, строки не имеют всех методов, которые имеют массивы. Они не наследуются от Array.prototype, они не являются реальными массивами - они просто похожи на массив. Однако вы можете тривиально преобразовать строку в массив либо с помощью ….split(''), либо Array.from(…).
Согласно документации эти функции не существуют (Документация).
Но вы можете добавить функции к прототипу 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
}