2011-10-23 2 views
1

J'ai deux objets JSON:Comment déplacer un élément d'un objet JSON à un autre

open_positions = [{\"id\":83,\"position\":0},{\"id\":82,\"position\":1},{\"id\":79,\"position\":2}] 

done_positions = [{\"id\":85,\"position\":0},{\"id\":84,\"position\":1}] 

Comment puis-je sélectionner un élément de open_positions donné une carte d'identité et le déplacer vers le haut de done_positions?

Merci

+1

Quelle est votre code réel? Ce que vous avez n'est ni un JSON valide ni un JavaScript valide. –

+0

Il est affiché via des rails, dans le journal des rails voici un exemple de son apparence: Paramètres: {"list_items" => {"open_positions" => "[{\" id \ ": 83, \" position \ ": 0}, {\ "id \": 82, \ "position \": 1}] "," done_positions "=>" [{\ "id \": 85, \ "position \": 0}, {\ "id \": 84, \ "position \": 1}] "} – AnApprentice

Répondre

0
open_positions = [{"id":83,"position":0},{"id":82,"position":1},{"id":79,"position":2}]; 
done_positions = [{"id":85,"position":0},{"id":84,"position":1}]; 

id = 82; 

for(key in open_positions){ 
    if(open_positions[key].id === id){ 
     myObj = open_positions[key]; 
    } 
} 

newObj = new Object(); 
newObj[0] = myObj; 
for(key in done_positions){ 
    newObj[key+1] = done_positions[key]; 
} 

console.log(newObj); 
2
open_positions = [{"id":83,"position":0},{"id":82,"position":1},{"id":79,"position":2}]; 

done_positions = [{"id":85,"position":0},{"id":84,"position":1}]; 

function move_to_done(id){ 
    for(var pos in open_positions){ 
    if(open_positions[pos].id == id){ 
     done_positions.push(open_positions[pos]); 
     delete open_positions[pos]; 
    } 
    } 
} 

move_to_done(83); 
-1
var open_positions = [{"id":83,"position":0},{"id":82,"position":1},{"id":79,"position":2}]; 
var done_positions = [{"id":85,"position":0},{"id":84,"position":1}]; 

for(var index in open_positions){ 
    if(open_positions[index]["id"]=="83"){ 
     done_positions.unshift(open_positions[index]) 
     open_positions.splice(index,1) 
    } 
} 

aussi sans doute il n'y a pas besoin de la propierty "position" car est le même indice.

0

Si vous ne voulez pas analyser le JSON, vous pouvez changer d'ID avec cette fonction.

ex: http://jsfiddle.net/ZYED5/1/

function change(id) { 
    var re = new RegExp("(,)?\\{\\\"id\\\"\\:" + id + "\\,\\\"position\\\"\\:[0-9]*\\}(,)?"); 
    var match = open.match(re); 
    done = done.replace("]", "," + (match ? match[0] : "") + "]").replace(",,", ",").replace(",]", "]"); 
    open = open.replace(re, "").replace("}{", "},{"); 
} 
Questions connexes