2017-03-07 67 views
0

我有一個數組,如下所示如何動態創建以下JSON

var someData = [「123」,「456」];

我想從上面

[{ 
    "link_video": "123", 
    "video_id":456 
}, { 
    "link_video": "456" 
    "video_id": "123" 
}] 

我曾嘗試創建以下JSON以下

var myvideos = []; 
 
var someData = ["123", "456"]; 
 
for (var i = 0; i < someData.length; i++) { 
 
    myvideos.push({ 
 
    "link_video": someData[i], 
 
    "video_id": someData[i], 
 
    }); 
 
} 
 
console.log(JSON.stringify(myvideos));

但正在形成的輸出

[{"link_video":"123","video_id":"123"},{"link_video":"456","video_id":"456"}] 

http://jsfiddle.net/cod7ceho/465/

你能告訴我怎麼形成這個JSON正確

+0

您引用的第一個「JSON」是無效的json,因爲它在'「link_video」:「456」'後沒有輸入逗號。作爲輸出獲得的第二個json是有效的,並且據我所知,除了那個逗號之外完全相同。我不確定那個輸出有什麼問題? – Nanne

+0

link_video和video_id是相同的。 – Pawan

+0

@Nanne比較第一個輸出到所需的輸出。請注意,'link_video'和'video_id'在生成的輸出中是相同的,但不是所需的。此外,我猜想在所需的輸出中無效的JSON只是由於印刷錯誤。 – BenM

回答

3

那麼,你需要訪問兩個元素的數組,每個迭代的,所以你應該更新你的循環,然後追加對象兩次通過訪問在索引i元素及其直接兄弟陣列中:

var myvideos = []; 
 
var someData = ["123", "456"]; 
 

 
for (var i = 0; i < someData.length; i+=2) 
 
{ 
 
    myvideos.push({ 
 
     "link_video": someData[i], 
 
     "video_id": someData[i+1], 
 
    }, 
 
    { 
 
     "link_video": someData[i+1], 
 
     "video_id": someData[i], 
 
    }); 
 
} 
 
console.log(myvideos);

+0

工作,非常感謝... – Pawan

+0

只要偶數個'someData'中的項目有效,如果它是奇數,最後一個元素被忽略。 – fredrik

+0

@fredrik但是提供的示例意味着輸入中必須始終有一個偶數。 – BenM

-1

就這樣笑

var myvideos = []; 
 
var someData = ["123", "456"]; 
 

 
console.log(JSON.stringify([{"link_video": someData[0], "video_id": someData[1]}, {"link_video": someData[1], "video_id": someData[0]}]));

1

試試他,這可能是你想找的

它還帶有更多的數據,如["123", "456", "789"]

var myvideos = []; 
 
var someData = ["123", "456"]; 
 
for (var i = 0; i < someData.length; i++) { 
 
    myvideos.push({ 
 
    "link_video": someData[i], 
 
    "video_id": someData[(i == 0 ? (i + 1) : i == (someData.length - 1) ? (0) : (i + 1))], 
 
    }); 
 
} 
 
console.log(JSON.stringify(myvideos));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
手動