Ответ 1
myArray.join('_') должен делать то, что вам нужно.
Обычно метод JavaScripts toString()
возвращает массив в отдельном значении, подобном этому
var myArray = [ 'zero', 'one', 'two', 'three', 'four', 'five' ];
var result = myArray .toString();
И он возвращает результат следующим образом: zero,one,two,three,four,five
.
Но у меня есть требование представить результат в этом формате zero_one_two_three_four_five
(заменив запятую на _
).
Я знаю, что мы можем сделать это, используя метод replace после преобразования массива в строку. Есть ли лучшая альтернатива?
Приветствия
Рамеш Вель
myArray.join('_') должен делать то, что вам нужно.
Используйте join
, чтобы присоединиться к элементам с определенным разделителем:
myArray.join("_")
Чтобы не служить никакой другой цели, кроме демонстрации, это можно сделать и ответить на название (но не на дух) заданного вопроса:
<pre>
<script type="text/javascript">
Array.prototype.toStringDefault = Array.prototype.toString;
Array.prototype.toString = function (delim) {
if ('undefined' === typeof delim) {
return this.toStringDefault();
}
return this.join(delim);
}
var myArray = [ 'zero', 'one', 'two', 'three', 'four', 'five' ];
var result1 = myArray.toString('_');
document.writeln(result1);
var result2 = myArray.toString();
document.writeln(result2);
</script>
</pre>
Я не рекомендую это делать. Это делает ваш код более сложным и зависит от кода, необходимого для расширения функциональности toString()
на Array
. Использование Array.join()
является правильным ответом, я просто хотел показать, что JavaScript может быть изменен для выполнения первоначального запроса.
Ответ Grant Wagner имеет полезность, когда массив является многомерным.
возьмите массив [['Mary', 'Had'], ['A', 'Little'], ['lamb', 'and']]
Если вы используете метод Array.join('_'), то результат будет выглядеть примерно так:
Мэри, Had_A, Little_lamb и
поскольку метод join использует метод .toString() для сборки каждого элемента в основном массиве, и по умолчанию используется разделитель запятой.
Однако изменение метода Array.toString() приведет к желаемому результату.