bir dize dönüştürmek. true/false
boolean desteğiyleben dönüştürmek istediğiniz</p> <pre><code>":All;true:Yes;false: " </code></pre> <p>gibi bir nesneye olan şu dizeyi sahip javascript nesne
cevap
:
var listItems = [];
var yourString = ":All;true:Yes;false: ";
var arr = yourString.split(";");
for (var i = 0; i < arr.length; i++) {
var arr2 = arr[i].split(":");
var value = arr2[0] || "";
if (value == "true" || value == "false")
value = (value === "true");
listItems.push({
itemValue : value,
itemText : arr2[1] || ""
});
}
console.log(listItems);
DEMO:http://jsfiddle.net/MZKFU/1/
GÜNCELLEME. Evrensel değer ayrıştırması için Esailija's answer'da gösterildiği gibi try/catch
bloklu JSON.parse
yöntemini kullanabilirsiniz.
var str = ":All;true:Yes;false: ";
var listItems = str.split(/[;:]/g).map(function(v, i, arr){
var itemValue;
if(i % 2) {
return;
}
try {
itemValue = JSON.parse(v);
}
catch(e) {
itemValue = v;
}
return {
itemValue: itemValue,
itemText: arr[i + 1]
};
}).filter(Boolean);
Sonuç: Bu dize olarak "yanlış" ve "gerçek" set olacağını
[
Object
itemText: "All"
itemValue: ""
__proto__: Object
,
Object
itemText: "Yes"
itemValue: true
__proto__: Object
,
Object
itemText: " "
itemValue: false
__proto__: Object
]
Akıllı çözüm. –
En iyi çözüm. Onun bir utanç 'harita' javascript daha fazla kullanılmaz. Bir süredir tüm önemli tarayıcılarda destek oldu. – Dve
Gerçekten akıllıca bir çözüm! Bununla birlikte, değer olarak herhangi bir dize veya sayıya sahipseniz başarısız olur. Ama kolayca idare edilebilir. – VisioN
var string = ":All;true:Yes;false: ";
var array = string.split(/:|;/);
var listItems = [];
for (var i = 0; i < array.length; i += 2) {
listItems.push({itemValue: array[i], itemText: array[i + 1]})
}
dikkat edin. Varsa numaralar için de aynı. Bunları uygun türlerle kaydetmek istiyorsanız, manuel bir dönüşüm eklemeniz gerekir. Bir şey gibi:
function value(val) {
if (!isNaN(val))
return +val;
if (val === "true")
return true;
if (val === "false")
return false;
return val;
}
nedenle diziye nesneyi itmek çizgi olarak aşağıda değişecektir:
listItems.push({itemValue: value(array[i]), itemText: array[i + 1]})
var myString = ":All;true:Yes;false: ";
var myArray = myString.split(';');
var literal = [];
for(var i = 0; i<myArray.length; i++){
var mixed_string = myArray[i];
var changed_array = mixed_string.split(":");
var key = changed_array[0];
var value = changed_array[1];
literal.push({key:value});
}
console.log(literal);
- 1. Git, <<<<<<< HEAD dosyasına
- 2. Şu izle ifadem tutan bana gösteriyor Şu anda bir</p> <pre><code>Expression<Func<T,bool>> </code></pre> <p>bir</p> <pre><code>Expression<Func<T,object>> </code></pre> <p>dönüştürmek çalışıyorum
- 3. Bash komut I</p> <pre><code>first second third fourth fifth </code></pre> <p>temelde bir liste ayrılmış olan alanlar veren bir dizge</p> <pre><code>echo $STRING </code></pre> <p>sahip bir dizi
- 4. T-SQL:</p> <p>ÜrünNo ProductName Fiyatı Kategori <br /> <br /> : Gözardı/Benim soru için
- 5. <all> ve <any> öğelerini kullanarak açık olan geçerli bir XSD oluşturma
- 6. Dozer Haritalama HashMap <Key,Value> ben olan bir kaynak nesne var <Value>
- 7. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 8. EJS: <% = versus <% -
- 9. Ben</em></strong> grafiği oluşturmak için <strong><em>AmCharts kullanıyorum</p> <p>, JavaScript sürümü
- 10. "<%:" ne yapıyor?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>"<%:" Ne vermez: do
- 11. nasıl ben bu <code>NSLog</code> deyimi böylece değiştirecek Yani</p> <pre><code>NSLog(@"%u", myData.length); </code></pre> <p>kullanarak megs
- 12. <: <İş nasıl?
- 13. İçindeki eleman sayısı <5 in <a1 <0</ a1><T>
- 14. Ben <strong>OSB Eclipse</strong> 2 projeleri <strong>A</strong> ve <strong>B</strong> sahip tutulma
- 15. Bağlantı.Close() ve connection.Dispose() arasındaki fark nedir? <code>SQLiteDataReader</code> nesne için</p> <ul> <li><code>Close()</code></li> <li><code>Dispose()</code></li> </ul> <p>aynı:
- 16. CoffeeScript fonksiyonu/varlıklar/javascript ben <code>app/assets/javascript</code> yılında CoffeeScript bir işlev yarattı</p> <pre><code>myFunction = (variable) -> </code></pre> <p>
- 17. dönüştürme <IMG> Bu</p> <pre><code><img id='my_img' src='www.someimage.com'> </code></pre> <p>gibi bir görüntü var Javascript
- 18. Bot'um argümanlarla nasıl yanıt verir?</p> <ul> <li><code>/list</code></li> <li><code>/info 123</code></li> </ul> <p>Ben <code>/info</code> yakalamak ve gibi ek argümanlar iletebilirsiniz gibi bu harika çalışıyor:
- 19. Ben iki işlevi <code>f</code> ve <code>g</code> sahip C++
- 20. Sayı bina bu hatayı alıyorum talimatını gibi <code>ant all</code> çalıştırdığınızda
- 21. java.util.stream.Stream <Something> dönüştürmek için kotlin.Sequence <Something>
- 22. Kibana 4: URL Ben dize olarak Autoindex</p> <pre><code>path: /abc/nvb/jklk.txt </code></pre> <p>gibi benim endeksinde bir alan var ve yukarıdaki gibi gösterilir düzgün
- 23. <section>, <nav> ve <article>
- 24. Objective-C'de özel yönergeler oluşturmak mümkün mü?</p> <ul> <li>@interface</li> <li>@implementation</li> <li>@end</li> <li>@protocol bence</li> <li>@property</li> <li>@synthesize</li> </ul> <p>:
- 25. NSNull isEqualToString:</p> <p>Ben bu gibi onları kullanıyorum <code>place and date.</code> iki dizeyi var: objc
- 26. Nedir? ve << demek?
- 27. Hiyerarşik Sözlük Ben şu anda ben foreach kullanıyorum</p> <p>düz sistem Sözlük için <code>List<KeyValuePair<Document, File>></code> olanı dönüştürmek istediğiniz <code>Dictionary<Document, File[ n ]></code> gibi bir Sözlüğü var
- 28. Thymeleaf'ın JSP etiketleri gibi bir şeyleri var mı?</p> <p><strong><em>ChildPage.jsp</em></strong>:
- 29. JAVASCRIPT/Krom:</p> <pre><code>google.com </code></pre> <p>Belirli Bir Sayfa
- 30. nasıl</em></strong> çince karakterler</em></strong> hanyu pinyin için <strong><em>den <strong><em>dönüştürmek için
yapabilir isteyebileceği 'var ARR2 = arr [i] .split (":", 1) ', değerlerin iki nokta üst üste eklenmesine izin verir. –
Harika, ama aynı zamanda "doğru" ve "yanlış" ı da ele almalıyız: Sonuç olarak ortaya çıkan JSON'da diziler olarak değil, boole olarak dönmelerini istemiyoruz. –
@GarethMcCaughan Sadece sağ tarafta değerimiz varsa çalışacaktır :) – VisioN