2016-04-03 16 views
0

JS nesnelerini JS dizilerine dönüştürme konusu burada ele alınsa da, sorum şu algoritma optimizasyonu ile ilgilidir.Nesnenin anahtar ve değer dizisine tam dönüşümü: daha iyi çözüm?

benim nesne

myObject = { 
     "key q": "value q", 
     "key p": "value p", 
     "key g": "value g" }; 

tuşları ve değerleri hem içeren bir JS dizi çevrilmek üzere olalım.

var myArr = []; 
var aString = JSON.stringify(myObject); 
aString = aString.substring (1, (aString.length-1)); // let's get rid of the braces 
myArr = aString.replace (/\:/gi, ','); 

Tüm sorunsuz çalışır, ancak bunlar (sözde) yavaş dize yöntemleri geçiren daha bazı hızlı bir yolu vardır: Şimdiye kadar, bu taktığı?

+0

nasıl sonra dizi bakmak gerekir? –

+0

[JSON Nesnesi ”diye bir şey yoktur] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

Olası kopyası daha iyi JS nesnesini diziye dönüştürme yolu] (http://stackoverflow.com/questions/6857468/a-better-way-to-convert-js-object-to-array) – Andreas

cevap

1

Yani bir dizide anahtarları ve değerleri bir araya getirmenin bir yolunu mu arıyorsunuz?

myObject = { 
 
     "key q": "value q, comma, more", 
 
     "key p": "value p", 
 
     "key g": "value g" }; 
 

 

 
myArr = []; 
 
Object.keys(myObject).forEach(function(k) { 
 
    myArr.push(k, myObject[k]) 
 
}); 
 

 
document.write('<pre>'+JSON.stringify(myArr,0,3));
Ve hiç dize fonksiyonları ile bir JSON yapısını değiştirmeye çalışmayın asla ediniz. Bu "yavaş" değil, sadece yanlış yanlış!

+0

Bu JSON değildir : ["JSON Nesnesi" diye bir şey yoktur) (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

@georg - Neden 'sadece düz yanlış 'Bu bir örnek için https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify bir göz atın: var foo = {vakıf: "Mozilla" , model: "kutu", hafta: 45, taşıma: "araba", ay: 7}; var jsonString = JSON.stringify (foo, replacecer); –

+0

@BriceCoustillas: 'JSON.stringify (... ikame)' 'dır,' someJsonString.replace (...) 'yanlıştır - sadece' String.replace' json sözdizimi hakkında bir ipucu yoktur. – georg

0

Eğer reduce hayranı iseniz:

function clump(o) { 
    return Object.keys(o).reduce((result, k) => result.concat(k, o[k]), []); 
} 
İlgili konular