2011-10-23 62 views
1

我有兩個JSON對象:如何從一個JSON對象移動一個項目到另一個

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 open_positions選擇一個項目並將其移動到done_positions的頂部?

感謝

+1

什麼是你的實際代碼?你有什麼既不是有效的JSON也不是有效的JavaScript。 –

+0

它通過rails發佈,在rails日誌中是一個它如何顯示的示例:參數:{「list_items」=> {「open_positions」=>「[{\」id \「:83,\」position \「: 0},{\「id \」:82,\「position \」:1}]「,」done_positions「=>」[{\「id \」:85,\「position \」: 「ID \」:84,\ 「位置\」:1}]「} – AnApprentice

回答

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) 
    } 
} 

也有可能是沒有必要的propierty 「位置」,因爲是相同的索引。

0

如果你不想解析JSON,你可以用這個函數切換ID。

例如: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("}{", "},{"); 
} 
相關問題