Конвертировать массив JavaScript в строку
Я пытаюсь перебрать список "значение" и преобразовать его в строку. Вот код:
var blkstr = $.each(value, function(idx2,val2) {
var str = idx2 + ":" + val2;
alert(str);
return str;
}).get().join(", ");
Функция
alert() работает просто отлично и отображает правильное значение. Но каким-то образом функция jquery.get() не получает нужный объект и не работает. Что я делаю неправильно?
Ответы
Ответ 1
Если value
- ассоциативный массив, такой код будет работать нормально:
var value = { "aaa": "111", "bbb": "222", "ccc": "333" };
var blkstr = [];
$.each(value, function(idx2,val2) {
var str = idx2 + ":" + val2;
blkstr.push(str);
});
console.log(blkstr.join(", "));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
Ответ 2
Преобразование из массива в строку так просто!
var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""
Что это сейчас. А - это строка.:)
Ответ 3
Вы можете использовать .toString()
для объединения массива с запятой.
var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c
Или, установите разделитель с помощью array.join('; '); // result: a; b; c
.
Ответ 4
не уверен, что это то, что вы хотели, но
var arr = [A, B, C];
var arrString = arr.join(", ");
В результате получается следующий результат:
A, B, C
Ответ 5
Четыре метода преобразования массива в строку.
Принуждение к строке
var arr = ['a', 'b', 'c'] + []; // "a,b,c"
var arr = ['a', 'b', 'c'] + ''; // "a,b,c"
Вызов .toString()
var arr = ['a', 'b', 'c'].toString(); // "a,b,c"
Явное соединение с помощью .join()
var arr = ['a', 'b', 'c'].join(); // "a,b,c" (Defaults to ',' seperator)
var arr = ['a', 'b', 'c'].join(','); // "a,b,c"
Вы можете использовать другие разделители, например ', '
var arr = ['a', 'b', 'c'].join(', '); // "a, b, c"
Использование JSON.stringify()
Это чище, поскольку он цитирует строки внутри массива и правильно обрабатывает вложенные массивы.
var arr = JSON.stringify(['a', 'b', 'c']); // '["a","b","c"]'
Ответ 6
jQuery.each
просто перебирает массив, он ничего не делает с возвращаемым значением Δ. Вы ищете jQuery.map
(я также думаю, что get()
не нужно, поскольку вы не имеете дело с объектами jQuery):
var blkstr = $.map(value, function(val,index) {
var str = index + ":" + val;
return str;
}).join(", ");
DEMO
Но зачем вообще использовать jQuery? map
вводит ненужный вызов функции для каждого элемента.
var values = [];
for(var i = 0, l = value.length; i < l; i++) {
values.push(i + ':' + value[i]);
}
// or if you actually have an object:
for(var id in value) {
if(value.hasOwnProperty(id)) {
values.push(id + ':' + value[id]);
}
}
var blkstr = values.join(', ');
Δ: он использует только возвращаемое значение, должен ли он продолжать цикл над элементами или нет. Возврат значения "ложь" остановит цикл.
Ответ 7
эта моя функция, преобразовать объект или массив в json
function obj2json(_data){
str = '{ ';
first = true;
$.each(_data, function(i, v) {
if(first != true)
str += ",";
else first = false;
if ($.type(v)== 'object' )
str += "'" + i + "':" + obj2arr(v) ;
else if ($.type(v)== 'array')
str += "'" + i + "':" + obj2arr(v) ;
else{
str += "'" + i + "':'" + v + "'";
}
});
return str+= '}';
}
Я просто редактирую v0.2 ^. ^
function obj2json(_data){
str = (($.type(_data)== 'array')?'[ ': '{ ');
first = true;
$.each(_data, function(i, v) {
if(first != true)
str += ",";
else first = false;
if ($.type(v)== 'object' )
str += '"' + i + '":' + obj2json(v) ;
else if ($.type(v)== 'array')
str += '"' + i + '":' + obj2json(v) ;
else{
if($.type(_data)== 'array')
str += '"' + v + '"';
else
str += '"' + i + '":"' + v + '"';
}
});
return str+= (($.type(_data)== 'array')? ' ] ':' } ');;
}
Ответ 8
Используйте join()
и разделитель.
Рабочий пример
var arr = ['a', 'b', 'c', 1, 2, '3'];
// using toString method
var rslt = arr.toString();
console.log(rslt);
// using join method. With a separator '-'
rslt = arr.join('-');
console.log(rslt);
// using join method. without a separator
rslt = arr.join('');
console.log(rslt);
Ответ 9
var arr = new Array();
var blkstr = $.each([1, 2, 3], function(idx2,val2) {
arr.push(idx2 + ":" + val2);
return arr;
}).join(', ');
console.log(blkstr);
ИЛИ
var arr = new Array();
$.each([1, 2, 3], function(idx2,val2) {
arr.push(idx2 + ":" + val2);
});
console.log(arr.join(', '));
Ответ 10
преобразовать массив в строку параметров GET, которая может быть добавлена к URL-адресу, может быть выполнена следующим образом
function encodeGet(array){
return getParams = $.map(array , function(val,index) {
var str = index + "=" + escape(val);
return str;
}).join("&");
}
вызов этой функции как
var getStr = encodeGet({
search: $('input[name="search"]').val(),
location: $('input[name="location"]').val(),
dod: $('input[name="dod"]').val(),
type: $('input[name="type"]').val()
});
window.location = '/site/search?'+getStr;
который пересылает пользователя на сайт/сайт/поиск? страницы с параметрами get, указанными в массиве, заданном для encodeGet.
Ответ 11
Мне понадобился массив, чтобы стать представлением String массива
Я имею в виду, что мне нужно, чтобы
var a = ['a','b','c'];
//became a "real" array string-like to pass on query params so was easy to do:
JSON.stringify(a); //-->"['a','b','c']"
возможно, кому-то это нужно:)
Ответ 12
Не следует путать массив со списками...
Это список: {...} и не имеет длины или других свойств Array.
Это массив: [...], и вы можете использовать функции массива, методы и так, как кто-то предложил здесь: someArray.toString();
"someObj.toString();" просто не будет работать ни на одном другом типе объектов, например в списках.; -)
Ответ 13
Array.prototype.toString()
Метод toString() возвращает строку, представляющую указанный массив и его элементы.
var months = ["Jan", "Feb", "Mar", "Apr"];
months.toString(); // "Jan,Feb,Mar,Apr"
Синтаксис
arr.toString()
Возвращаемое значение
Строка, представляющая элементы массива.
для получения дополнительной информации:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString
Ответ 14
Вот пример использования функций подчеркивания.
var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");
Конечный результат будет "Мо, Ларри, Кудрявый"