2014-10-04 69 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 
    }