JavaScript配列を文字列に変換します


115

「値」リストを反復処理して文字列に変換しようとしています。これがコードです:

var blkstr = $.each(value, function(idx2,val2) {                    
     var str = idx2 + ":" + val2;
     alert(str);
     return str;
}).get().join(", ");    

alert()関数は正常に動作し、適切な値を表示します。しかし、どういうわけか、jqueryの.get()関数は正しい種類のオブジェクトを取得できず、失敗します。何が悪いのですか?


5
「価値」とは?配列ですか?その場合、var str = value.join( '、')で問題なく動作する可能性があります。
StefanS 2011年

はい。.get()部分をコメント化すると、「id1:val1」、「id2:val2」などを表示するアラートボックスが表示されます。
Neo

「...正しい種類のオブジェクトを取得する」という意味ですか?(通常、[質問する]をクリックする前に簡単に校正することをお勧めします。)(以前のコメントを削除しました。これはかなり強く付けられたものです。この質問の誤字は、多くのタイプよりもはるかに少ないです。)
TJ Crowder 2013年

回答:


131

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()、配列を反復するだけで、それ以上のものはありません。


118

配列から文字列への変換はとても簡単です!

var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""

これで終わりです。Aは文字列です。:)


7
代わりにA.toString()をお勧めしますので、あなたが何をしているのかがより明確になります。
ジャスティン

8
あなたがするなら[1,2,[3]].toString()、あなたは得るでしょう1,2,3、それはかなりごみです。この答えは、同じ壊れたネイティブ文字列メソッドへの同じ呼び出しを記述するためのより悪い方法です。42賛成票??
カールスミス

8
次のようにアレイに参加することもできます['Sunday','Monday','Tuesday','Wednesday','Thursday'].join('');
etoxin 2014

1
Array.join()これは、値をコンマで連結するだけではなく、ユーザーが連結の方法を決定できるため、間違いなく最良のオプションです。たとえば、コンマ+空白を使用できます。
FelipeLeão2016年

1
これは私にぴったりです。私は、API呼び出しのためにスペースなしでコンマで区切られた文字列に変更される配列を渡しています。再度、感謝します。
Nick D

104

を使用.toString()して、配列をコンマで結合できます。

var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c

または、でセパレータを設定しarray.join('; '); // result: a; b; cます。


3
配列が文字列に文字列に変換され、正規表現を使用して脂肪を取り除くことを強制されることを期待していましたが、これは非常に優れています!ジャスティンに感謝します。
クランベリー

52

これがあなたが望んでいたものかどうかわかりませんが

var arr = [A, B, C];
var arrString = arr.join(", ");

これにより、次の出力が生成されます。

A、B、C


1
これは、今までに賛辞最も簡単な方法です
ジミーObonyo ABOR

1
カンマ用に1つの余分なスペースが必要でした。これが唯一の簡単な方法でした。
Talha TalipAçıkgöz2017年

1
最も簡単で簡単な方法。ありがとう
ラウルA.

36

配列を文字列に変換する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"]'

17

jQuery.each配列をループするだけで、戻り値に対して何もしません。あなたが探しているjQuery.map(あなたはget()jQueryオブジェクトを扱っていないので、それも不要だと思います):

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(', ');

∆:要素をループし続けるかどうかに関係なく、戻り値のみを使用します。「偽の」値を返すと、ループが停止します。


ここに「クリーンアップされた」コードを貼り付けました。私はjqueryオブジェクトを扱うのに影響を与えています。おかげで、マップは完全に機能します。
ネオ

@Neo:jQueryオブジェクトのmap場合のみ必要ですvalue。そして、あなたは使用する必要がありますvalue.map(...).get()。ただし、jQueryオブジェクトの配列がある場合は、は必要ありませんget。どういたしまして:)
フェリックスクリング

9

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);


4

これは私の関数です、オブジェクトまたは配列を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')? ' ] ':' } ');;
}

3

配列の文字列表現になるために配列が必要だった

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']"

多分誰かがそれを必要とする:)


2
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(', '));

2

配列をurlに追加できるGET param文字列に変換するには、次のようにします。

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 / searchに転送しますか?encodeGetに指定された配列で概要が示されているgetパラメータを含むページ。


1
jQuery.param(array)は、encodeGet(array)が行うことを行うことに注意してください。
Curtis Yallop 2013

1

配列とリストを混同しないでください...これはリストです:{...}で長さやその他の配列プロパティはありません。

これは配列です:[...]そして、ここで提案されている誰かのように、配列関数やメソッドなどを使用できます:someArray.toString();

「someObj.toString();」リストのような他のオブジェクトタイプでは機能しません。;-)



0

以下は、アンダースコア関数を使用した例です。

var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");

最終出力は「萌え、ラリー、カーリー」になります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.