私は "値"リストを反復処理し、それを文字列に変換しようとしています。これがコードです:
var blkstr = $.each(value, function(idx2,val2) {
var str = idx2 + ":" + val2;
alert(str);
return str;
}).get().join(", ");
alert()関数はうまく機能し、適切な値を表示します。しかし、どういうわけか、jqueryの.get()関数は正しい種類のオブジェクトを取得できず、失敗します。何がおかしいのですか?
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>
(出力は開発コンソールに表示されます)
Felixが述べたように、each()
は単に配列を反復しているだけです。
配列から文字列への変換はとても簡単です!
var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""
それが今それは今Aは文字列です。 :)
.toString()
を使用すると、配列をコンマで結合できます。
var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c
あるいは、array.join('; '); // result: a; b; c
で区切り文字を設定します。
これがあなたが望むものであるかどうかはわからないが
var arr = [A, B, C];
var arrString = arr.join(", ");
これにより、次のような出力が得られます。
A、B、C
配列を文字列に変換する4つの方法.
文字列への強制
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"]'
jQuery.each
は配列をループしているだけで、戻り値に対して何もしません。∆。 jQuery.map
を探しています(jQueryオブジェクトを扱っていないのでget()
は不要であるとも思います)。
var blkstr = $.map(value, function(val,index) {
var str = index + ":" + val;
return str;
}).join(", ");
しかし、この場合はなぜ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(', ');
∆:要素をループし続けるかどうかにかかわらず、戻り値のみを使用します。 "偽の"値を返すと、ループが止まります。
これは私の関数です、オブジェクトまたは配列を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')? ' ] ':' } ');;
}
var arr = new Array();
var blkstr = $.each([1, 2, 3], function(idx2,val2) {
arr.Push(idx2 + ":" + val2);
return arr;
}).join(', ');
console.log(blkstr);
OR
var arr = new Array();
$.each([1, 2, 3], function(idx2,val2) {
arr.Push(idx2 + ":" + val2);
});
console.log(arr.join(', '));
配列をURLに追加できるGETパラメータ文字列に変換するには、次のようにします。
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;
ユーザーを/ site /検索に転送しますか? encodeGetに与えられた配列の中でget paramsが概説されているページ。
配列の文字列表現になるために配列が必要でした
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']"
多分誰かがそれを必要とする:)
実施例
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);
ArrayとListsを混同してはいけません...これはlist:{...}で、長さや他のArrayプロパティはありません。
これは配列です:[...]そして、ここで提案されているように、配列関数やメソッドなどを使うことができます。someArray.toString();
"someObj.toString();"リストのような他のオブジェクトタイプでは動作しません。 ;-)
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
これはアンダースコア関数を使った例です。
var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");
最終的な出力は「萌え、ラリー、巻き毛」になります。