2014-10-04 58 views
0

對於非常基本的問題,我很抱歉,但我無法弄清楚。這是我第一次寫服務器。幾乎我們有一個iPhone應用程序,通過使用JSON數據執行POST請求來諮詢我正在編寫的服務器。當我收到這些數據時,這相當於JavaScript中的一個對象嗎?當我在JavaScript中的兩個對象,假設格式:將節點中收到的POST請求轉換爲Javascript對象

var x = { major_id: 1234, minor_id: 5678}; 
var y = { major_id: 1234, minor_id: 5678}; 

我能夠做到:

if (x == y) { 
    //do something 
} 

或者我需要給每個元素的對象單獨比較?

+1

你有對象的每個元素逐個進行比較,看看是否所有的屬性都相同。 '=='比較來查看它們是否是同一個對象,而不是它們是具有相同內容的兩個獨立的對象。 – jfriend00 2014-10-04 21:18:21

+0

@ jfriend00感謝您的迴應!就接收POST請求而言,我從POST請求接收的變量是字符串還是對象,或者是什麼?我無法進行比較,因爲我不確定如何使我收到的數據與應用程序中的變量相當。謝謝! – thomasdclark 2014-10-04 21:24:07

+0

你必須向我們展示發送POST的代碼和接收POST的代碼,以便我們知道它是什麼。它可能是作爲JSON字符串通過線路發送的,然後根據您的接收代碼,可能會或可能不會被解析爲JavaScript對象。你可以在它上面做一個'console.log(typeof x)'和'console.log(x)'來查看它在接收端的內容。 – jfriend00 2014-10-04 21:27:04

回答

1

這取決於您從POST中收到的內容。這是最可能字符串化JSON,您可以使用變身爲一個對象:JSON.parse(receivedString);

使用typeof x

一旦兩個x檢查您的變量的類型和y有相同的類型,您可以按如下對它們進行比較:

  • 如果X和Y是JSON字符串,請使用x==y
  • 如果他們是兩個對象,需要通過一對一的比較參數。一些圖書館爲你抽象。例如,你可以使用​​的isEqual方法和做類似:

    var _ = require('underscore') 
    var x = { major_id: 1234, minor_id: 5678}; 
    var y = { major_id: 1234, minor_id: 5678}; 
    if(_.isEqual(x, y)){ 
        //Do stuff 
    }