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


365

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

कोड को देखो:

var string = "0,1";
var array = [string];
alert(array[0]);

इस मामले में, alertपॉप-अप होगा 0,1। जब यह एक सरणी होगी, तो यह पॉप-अप होगा 0, और जब alert(array[1]);बुलाया जाता है, तो इसे पॉप-अप करना चाहिए 1

क्या ऐसे स्ट्रिंग को जावास्क्रिप्ट सरणी में बदलने का कोई मौका है?


इस बात पर निर्भर करते हुए कि आप ऐसा क्यों चाहते हैं, स्ट्रिंग्स और सरणियां पहले से ही बहुत ही परिचित हैं (यानी string[0] === '0'आपके प्रश्न में), ज्यादातर मामलों में आप स्ट्रिंग के रूप में एक स्ट्रिंग का इलाज कर सकते हैं और उस पर सरणी विधियों का उपयोग कर सकते हैं।
पॉल एस।

@PaulS .: IE8 और लोअर में यह विफल हो जाएगा ।
हेट लज़ीज़


सभी प्रकार के तारों के समर्थन के लिए सर्वोत्तम अभ्यास। यहां देखें stackoverflow.com/a/32657055/2632619
एंडी एआर

जवाबों:


667

इस तरह के सरल सरणी सदस्यों के लिए, आप उपयोग कर सकते हैं JSON.parse

var array = JSON.parse("[" + string + "]");

इससे आपको संख्याओं का एरियर मिलता है।

[0, 1]

यदि आप उपयोग करते हैं .split(), तो आप स्ट्रिंग्स के एक ऐरे के साथ समाप्त करेंगे।

["0", "1"]

बस जागरूक रहें जो JSON.parseआपको समर्थित डेटा प्रकारों तक सीमित कर देगा। यदि आपको मूल्यों undefinedया कार्यों की आवश्यकता है, तो आपको eval()जावास्क्रिप्ट पार्सर का उपयोग करना होगा।


यदि आप उपयोग करना चाहते हैं .split(), लेकिन आप संख्याओं का एक सरणी भी चाहते हैं, तो आप उपयोग कर सकते हैं Array.prototype.map, हालांकि आपको IE8 के लिए इसे कम करना होगा या केवल एक पारंपरिक लूप लिखना होगा।

var array = string.split(",").map(Number);

4
यह भी ध्यान रखें कि JSON.parse();IE6, IE7 में उपलब्ध नहीं है। मुझे लगता है कि इस मामले में String.split(',');यह आसान है।
स्क्रूलिफ

@scunliffe: सच है, एक शिम की जरूरत होगी, या कोई इसे शिम करने के लिए jQuery दृष्टिकोण ले सकता है var array = (new Function("return [" + string + "];"))().split()यदि नंबर की आवश्यकता नहीं है, तो उपयोग करना ठीक है, अन्यथा आपको परिणाम को मैप करना होगा।
हेट लेजी

10
@Downvoter: यह बताने की कोशिश करें कि उत्तर में क्या गलत है, ताकि मैं प्रदर्शित कर सकूं कि आप कैसे गलत हैं।
हेट लेजी

@ आई हेट लेज़ी दिस डोंट सपोर्ट ऑब्जेक्ट स्ट्रींग।वे यहां stackoverflow.com/a/32657055/2632619
एंडी एआर

@FarzadYZ उस (उपयोग eval) के साथ सावधान रहें । यदि सरणी में क्लाइंट साइड इनपुट से मान सम्‍मिलित हैं तो यह असुरक्षित होगा।
विल्ट


86

ईएस 6 में यह आसानी से हासिल किया जाता है ;

आप Arrays को Array.from ('string') के साथ स्ट्रिंग में बदल सकते हैं ;

Array.from("01")

दिलासा देंगे

['0', '1']

जो वास्तव में आप देख रहे हैं।


1
यह कमाल का है। मैंने अपने कोड का उपयोग JSON.parseकरने के Array.fromरूप में से स्थानांतरित कर दिया ES6। धन्यवादRay Kim
ईश्वर प्रसाद Yaddanapudi

कंसोल.लॉग (टाइपोफ़ डेटा); // string ========== var myArray = Array.from (डेटा); ============ कंसोल.लॉग (टाइपऑफ़ मायएरे); // ऑब्जेक्ट '==========' से संपत्ति या विधि का समर्थन नहीं करता है, ऐसा क्यों है?
जनाबटब शरशेयेव

1
लेकिन Array.from("0, 1, 233")लौटूंगा ["0", ",", " ", "1", ",", " ", "2", "3", "3"], अगर मैं चाहूं तो क्या होगा [0, 1, 233] ?
टीना चेन

17
यह हर एक वर्ण को एक तत्व तत्व के रूप में परिवर्तित कर रहा है। लेकिन हमें एरे एलिमेंट होने के लिए केवल कॉमा से अलग स्ट्रिंग्स की जरूरत है। तो एक वैध समाधान नहीं।
एडिसन डिसूजा

1
यह विधि केवल विश्वसनीय है जब तर्क Setतार का है।
जोश हबदास

57

यदि स्ट्रिंग पहले से सूची प्रारूप में है, तो आप JSON.parse का उपयोग कर सकते हैं:

var a = "['a', 'b', 'c']";
a = a.replace(/'/g, '"');
a = JSON.parse(a);

24

सभी प्रकार के तारों को परिवर्तित करें

var array = (new Function("return [" + str+ "];")());



var string = "0,1";

var objectstring = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}';

var stringArray = (new Function("return [" + string+ "];")());

var objectStringArray = (new Function("return [" + objectstring+ "];")());

JSFiddle https://jsfiddle.net/7ne9L4Lj/1/

सांत्वना में परिणाम

यहां छवि विवरण दर्ज करें

कुछ अभ्यास ऑब्जेक्ट ऑब्जेक्ट स्ट्रिंग्स का समर्थन नहीं करता है

- JSON.parse("[" + string + "]"); // throw error

 - string.split(",") 
// unexpected result 
   ["{Name:"Tshirt"", " CatGroupName:"Clothes"", " Gender:"male-female"}", "      {Name:"Dress"", " CatGroupName:"Clothes"", " Gender:"female"}", " {Name:"Belt"",    " CatGroupName:"Leather"", " Gender:"child"}"]

महान समारोह मैं भी इसका इस्तेमाल करता हूं लेकिन दुर्भाग्य से यह तार या प्रतीकों के लिए काम नहीं करता है: जैसे "0, s" किसी भी विचार को कैसे ठीक किया जाए?
sqp_125

1
@ sqp_125 कोशिश 0, 's'?
असत्य

19

इस तरह के सरल सरणी सदस्यों के लिए, आप JSON.parse का उपयोग कर सकते हैं।

var listValues = "[{\"ComplianceTaskID\":75305,\"RequirementTypeID\":4,\"MissedRequirement\":\"Initial Photo Upload NRP\",\"TimeOverdueInMinutes\":null}]";

var array = JSON.parse("[" + listValues + "]");

इससे आपको संख्याओं का एरियर मिलता है।

अब आप वेरिएबल वैल्यू array.length = 1 की तरह हैं

मूल्य उत्पादन

array[0].ComplianceTaskID
array[0].RequirementTypeID
array[0].MissedRequirement
array[0].TimeOverdueInMinutes


16

ES6 का उपयोग करने वाला एक अन्य विकल्प स्प्रेड सिंटैक्स का उपयोग कर रहा है ।

var convertedArray = [..."01234"];

var stringToConvert = "012";
var convertedArray  = [...stringToConvert];
console.log(convertedArray);


2
बहुत बढ़िया! Array.from उत्तर के साथ वे ES6 समाधानों के लिए एकमात्र उत्तर होने चाहिए।
अर्योम प्रनोविच

10

अनाम फ़ंक्शन के साथ अंतर्निहित मानचित्र फ़ंक्शन का उपयोग करें, जैसे:

string.split(',').map(function(n) {return Number(n);});

[संपादित करें] यहां बताया गया है कि आप इसका उपयोग कैसे करेंगे

var string = "0,1";
var array = string.split(',').map(function(n) {
    return Number(n);
});
alert( array[0] );

1
यह सबसे आम तौर पर लागू होने वाला उत्तर है। JSON का उपयोग मनमाने ढंग से परिसीमन के लिए नहीं किया जा सकता है (जैसे टैब, स्पेस आदि)
javadba

यह तब काम नहीं करेगा जब आपके सरणी मान स्ट्रिंग मान हैं जो संभव है कि अंदर अल्पविराम हो। उदाहरण के लिए "123, 'a string with a , comma', 456":। आप इस तरह के मामलों को सही ढंग से संभालने के लिए एक अधिक जटिल रीजेक्स का उपयोग कर सकते हैं (उदाहरण के लिए यहां सुझाए गए कुछ )।
विल्ट

@ अच्छी तरह से नहीं, यह नहीं होगा, लेकिन हाँ आप इसे ठीक करने के लिए regex का उपयोग कर सकते हैं
Dan Mantyla

1
मुझे आपके उत्तर की आलोचना करने का मतलब नहीं था, लेकिन मैंने यह इसलिए लिखा क्योंकि मैंने आपके समाधान का इस्तेमाल किया और इस मुद्दे पर खुद ही भाग गया। संभवतः दूसरों के लिए टिप्पणी छोड़ने के बारे में सोचा था कि वे इसी तरह की समस्याओं में चल रहे थे।
विल्ट

3

अधिक "इसे अपने आप से आज़माएं" उदाहरण नीचे दिए गए हैं।

परिभाषा और उपयोग विभाजन () विधि का उपयोग एक स्ट्रिंग को सब्सट्रिंग के एक सरणी में विभाजित करने के लिए किया जाता है, और नया सरणी लौटाता है।

युक्ति: यदि रिक्त स्ट्रिंग ("") को विभाजक के रूप में उपयोग किया जाता है, तो स्ट्रिंग को प्रत्येक वर्ण के बीच विभाजित किया जाता है।

नोट: विभाजन () विधि मूल स्ट्रिंग को नहीं बदलती है।

var res = str.split(",");

3

आप स्ट्रिंग को एक सरणी में बदलने के लिए जावास्क्रिप्ट स्प्रेड सिंटैक्स का उपयोग कर सकते हैं । नीचे दिए गए समाधान में, मैं कॉमा को हटाता हूं फिर स्ट्रिंग को एक सरणी में परिवर्तित करता हूं।

var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])

2

जावास्क्रिप्ट में एक सरणी में कोमा सेपरेटेड स्ट्रिंग को कैसे कन्वर्ट करें?

var string = 'hello, world, test, test2, rummy, words';
var arr = string.split(', '); // split string on comma space
console.log( arr );

//Output
["hello", "world", "test", "test2", "rummy", "words"]

निम्न तरीके का उपयोग करके जावास्क्रिप्ट में सरणी में परिवर्तित स्ट्रिंग के अधिक उदाहरणों के लिए:

  1. विभाजन () - कोई विभाजक नहीं:
  2. विभाजन () - खाली स्ट्रिंग विभाजक:
  3. विभाजन () - शुरुआत / अंत में विभाजक:
  4. नियमित अभिव्यक्ति विभाजक:
  5. कोष्ठक पर कब्जा:
  6. विभाजन () सीमा तर्क के साथ

    इस लिंक को देखें ==> https://www.tutsmake.com/javascript-convert-string-to-array-javascript/


1

मैं '[', ']' अक्षर को हटाता हूं और ',' के साथ एक विभाजन करता हूं।

let array = stringObject.replace('[','').replace(']','').split(",").map(String);

0

स्प्लिट (",") स्ट्रिंग्स को एक स्ट्रिंग सरणी में अल्पविराम से बदल सकते हैं, यहां मेरा कोड स्निपेट है।

    var input ='Hybrid App, Phone-Gap, Apache Cordova, HTML5, JavaScript, BootStrap, JQuery, CSS3, Android Wear API'
    var output = input.split(",");
    console.log(output);

["हाइब्रिड ऐप", "फोन-गैप", "अपाचे कॉर्डोवा", "एचटीएमएल 5", "जावास्क्रिप्ट", "बूटस्ट्रैप", "JQuery", "CSS3", "Android Wear API"]


0

var i = "[{a:1,b:2}]",
    j = i.replace(/([a-zA-Z0-9]+?):/g, '"$1":').replace(/'/g,'"'),
    k = JSON.parse(j);

console.log(k)

// => नियमित अभिव्यक्ति की घोषणा

[a-zA-Z0-9] => मैच सभी az, AZ, 0-9

(): => समूह सभी मिलान तत्वों

$ 1 => प्रतिस्थापन स्ट्रिंग रेगेक्स में पहले मैच समूह को संदर्भित करता है।

g => वैश्विक ध्वज


0

उदाहरण का उपयोग कर Array.filter:

var str = 'a,b,hi,ma,n,yu';

var strArr = Array.prototype.filter.call(str, eachChar => eachChar !== ',');

-1

आप ,अल्पविराम और split('')स्ट्रिंग की जगह क्यों नहीं लेते हैं , जिसके परिणामस्वरूप यह परिणाम होगा ['0', '1'], इसके परिणामस्वरूप आप parseInt()तत्व को पूर्णांक प्रकार में परिवर्तित कर सकते हैं ।

it('convert string to array', function () {
  expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.