2016-03-31 8 views
1

kullanırken jQuery en serializeArray() benim formda ben şöyle bir dizi olsun:2 ad/değer bir dizisi, tek isme tuşları nesneleri dönüştürme/değer

[{ 
    "name": "name", 
    "value": "1_filename.jpg" 
}, { 
    "name": "caption", 
    "value": "1_caption" 
}, { 
    "name": "name", 
    "value": "2_filename.jpg" 
}, { 
    "name": "caption", 
    "value": "2_caption" 
}, { 
    "name": "name", 
    "value": "3_filename.jpg" 
}, { 
    "name": "caption", 
    "value": "3_caption" 
}, { 
    "name": "name", 
    "value": "4_filename.jpg" 
}, { 
    "name": "caption", 
    "value": "4_caption" 
}] 

Ama kodun kalan şey bekliyor Bunun gibi daha çok:

[{ 
    "name": "1_filename.jpg", 
    "caption": "1_caption" 
}, { 
    "name": "2_filename.jpg", 
    "caption": "2_caption" 
}, { 
    "name": "3_filename.jpg", 
    "caption": "3_caption" 
}, { 
    "name": "4_filename.jpg", 
    "caption": "4_caption" 
}] 

böyle diziler ve nesneleri işlemeye yeniyim ve zaten ikinci örneğe benzer bir şeye ilk dönüştürmek için kullanılan bir kongre olup olmadığını emin değilim.

İlk tahminim sadece 2'ye kadar yinelemek ve onları yeni bir nesneye itmektir. Biriyle yinelemeyi denedim ve isimleri kontrol ettim ama adın ve altyazıların doğru bir şekilde kaldığından emin olmakta sorun yaşıyorum.

var output = []; 
for (var i = 0; i < input.length; i += 2) { 
    output.push({ name: input[i].value, caption: input[i + 1].value }); 
} 

Working example

Bu açıkça katı nesnelerin sırası Namen olacağı varsayımına bağlıdır:

+0

serializeArray() 'diyorsunuz? –

cevap

1

Dizinin diğer her elemanını üzerinde dolaşır tek döngü ile bunu başarabilirsiniz , altyazıN, nameN + 1, captionN + 1 ...

Bu varsayım doğru değilse, yeni arranızı oluşturmadan önce giriş verilerini doğru biçimde koymak için kendi sort() mantığınızı uygulamanız gerekir. y. ikişer

+0

Bunun için teşekkürler! Sonunda bu versiyonun okunmasını daha kolay buldum. – Dustin

1

Döngü, bir nesne oluşturmak iki endeksler için obj içine ad ve değer ayarlayın ve diziye nesneyi itmek ham verilere önce benziyor nasıl

var arr = [{ 
 
    "name": "name", 
 
    "value": "1_filename.jpg" 
 
}, { 
 
    "name": "caption", 
 
    "value": "1_caption" 
 
}, { 
 
    "name": "name", 
 
    "value": "2_filename.jpg" 
 
}, { 
 
    "name": "caption", 
 
    "value": "2_caption" 
 
}, { 
 
    "name": "name", 
 
    "value": "3_filename.jpg" 
 
}, { 
 
    "name": "caption", 
 
    "value": "3_caption" 
 
}, { 
 
    "name": "name", 
 
    "value": "4_filename.jpg" 
 
}, { 
 
    "name": "caption", 
 
    "value": "4_caption" 
 
}]; 
 

 
var out = []; 
 
for(var i=0; i<arr.length; i+=2){ 
 
    var obj = {}; 
 
    obj[arr[i].name] = arr[i].value; 
 
    obj[arr[i+1].name] = arr[i+1].value; 
 
    out.push(obj); 
 
} 
 
console.log(out);

İlgili konular