जावास्क्रिप्ट सरणी को स्ट्रिंग में बदलें


115

मैं "मान" सूची पर पुनरावृति करने और इसे एक स्ट्रिंग में बदलने की कोशिश कर रहा हूं। यहाँ कोड है:

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

चेतावनी () फ़ंक्शन ठीक काम करता है और उचित मूल्य प्रदर्शित करता है। लेकिन किसी भी तरह, jquery .get () फ़ंक्शन को ऑब्जेक्ट का सही प्रकार नहीं मिलता है और विफल रहता है। मैं क्या गलत कर रहा हूं?


5
"मूल्य" क्या है? यह एक सरणी है? यदि ऐसा var str = value.join (',') ठीक काम कर सकता है।
स्टीफन एस

हाँ। अगर मैं .get () भाग पर टिप्पणी करता हूं, तो मुझे अलर्ट बॉक्स मिलते हैं जो "id1: val1", "id2: val2" आदि प्रदर्शित करते हैं।
नव

क्या आपका मतलब है "... वस्तु का सही प्रकार प्राप्त करें "? (क्वेश्चन क्वेश्चन पर क्लिक करने से पहले एक त्वरित प्रमाण आमतौर पर एक अच्छा विचार है।) (मैंने अपनी पहले की टिप्पणी को हटा दिया था जो कि अधिक दृढ़ता से रखी गई थी - इस प्रश्न में बहुत कम टाइपो और ऐसे कई हैं।)
टीजे क्राउडर

जवाबों:


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>

(आउटपुट देव कंसोल में दिखाई देगा)

जैसा कि फेलिक्स ने उल्लेख किया है, each()वह केवल सरणी को पुनरावृत्त कर रहा है, इससे अधिक कुछ नहीं।


118

ऐरे से स्ट्रिंग में परिवर्तित करना इतना आसान है!

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

वह यह है कि अब ए एक स्ट्रिंग है। :)


7
मैं सुझाव दूंगा कि ए। एंट्रिंग () के बजाय यह अधिक स्पष्ट है कि आप क्या कर रहे हैं।
जस्टिन

8
यदि आप करते हैं [1,2,[3]].toString(), तो आपको मिलेगा 1,2,3, जो बहुत ही बकवास है। यह उत्तर एक ही कॉल को उसी टूटी हुई, देशी स्ट्रिंग विधि में लिखने के लिए एक बदतर तरीका है। 42 अपवोट ??
कार्ल स्मिथ

8
तुम भी एक सरणी में शामिल हो सकते हैं जैसे['Sunday','Monday','Tuesday','Wednesday','Thursday'].join('');
etoxin

1
Array.join()यह निश्चित रूप से सबसे अच्छा विकल्प है, क्योंकि यह केवल कॉमा के साथ मानों को समाप्‍त नहीं करेगा, लेकिन उपयोगकर्ता को यह निर्धारित करने की अनुमति देता है कि संघनन कैसे किया जाना चाहिए। आप उदाहरण के लिए अल्पविराम + रिक्त स्थान का उपयोग कर सकते हैं।
फेलिप लेओए

1
यह मेरे लिए एकदम सही है। मैं एक ऐसे ऐरे में गुजर रहा हूं, जो कॉफ़ी द्वारा अलग किए गए स्ट्रिंग में बदल जाता है, जो एपी कॉल के लिए कोई स्थान नहीं है। एक बार फिर धन्यवाद।
निक डी

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

इसका परिणाम निम्न आउटपुट में होता है:

ए, बी, सी


1
यह अब तक का सबसे सरल तरीका है,
कुडोस

1
मुझे अल्पविराम के लिए एक अतिरिक्त स्थान की आवश्यकता थी, यह एकमात्र आसान तरीका था।
तलहा तालीप Açıkgöz

1
सबसे सरल और आसान तरीका। धन्यवाद
राउल ए

36

किसी ऐरे को स्ट्रिंग में बदलने के लिए चार विधियाँ।

एक स्ट्रिंग के लिए मजबूर

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

Uses: यह केवल रिटर्न वैल्यू का उपयोग करता है चाहे उसे एलिमेंट्स पर लूप जारी रखना चाहिए या नहीं। "मिथ्या" मान वापस करने से लूप बंद हो जाएगा।


मैं यहाँ कोड की तरह "साफ" चिपकाया। मैं jquery वस्तुओं के साथ काम कर रहा हूँ। धन्यवाद, मानचित्र पूरी तरह से काम करता है।
नव

@ नीओ: आपको केवल एक 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

यह मेरा कार्य है, ऑब्जेक्ट या एरे को जसन में बदलें

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

एक सरणी को एक 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;

जो उपयोगकर्ता को / साइट / खोज को अग्रेषित करेगा? एन्कोडिंग के लिए दिए गए सरणी में उल्लिखित गेट्स के साथ पृष्ठ।


1
ध्यान दें कि jQuery.param (सरणी) एन्कोडेट (सरणी) क्या करता है।
कर्टिस येलोप

1

सूची के साथ एरे को भ्रमित नहीं करना चाहिए ... यह एक सूची है: {...} और इसकी कोई लंबाई, या अन्य ऐरे गुण नहीं है।

यह एक एरे है: [...] और आप ऐरे फ़ंक्शंस, विधियों और इसलिए, जैसे किसी को यहाँ सुझाए गए का उपयोग कर सकते हैं: someArray.toString ();

"SomeObj.toString ();" बस किसी भी अन्य वस्तुओं पर काम नहीं करेंगे, जैसे सूचियाँ। ;-)


0

Array.prototype.toString ()

TheString () विधि निर्दिष्ट सरणी और उसके तत्वों का प्रतिनिधित्व करने वाली स्ट्रिंग लौटाती है।

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


0

यहां अंडरस्कोर फ़ंक्शन का उपयोग करके एक उदाहरण दिया गया है।

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

अंतिम आउटपुट "मो, लैरी, कर्ली" होगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.