JS:如何检查JSON是否包含特定值

时间:2016-07-08 09:36:53

标签: javascript jquery arrays json validation

问题

我正在使用包含多个事件(名称和日期)的数组来处理每个事件,我必须在SVG中创建一个点。

对于每个新的日期X = X + 5。 对于同一日期的每个事件,Y = Y + 5.

前:

事件1:日期= 1970年X = 10& Y = 10

事件2:日期= 1970年X = 10& Y = 15

如果绘制了一个点,我将该位置保存在JSON中。我现在如何验证JSON中是否存在该位置?

我尝试了什么

    var var events = [{TITLE:"event 1", DATE:"1970"},
                      {TITLE:"event 2", DATE:"1970"},
                      {TITLE:"event 3", DATE:"1970"}];
    var pos_reserved = [];
    var X = 10;
    var Y = 10;
    if (pos_reserved.X != X && pos_reserved.Y != Y){
      Y = 30;
    }
    else if (pos_reserved.X == X && pos_reserved.Y == Y)
    {
      Y = 10;
    }
    else {}
    pos_reserved.push({"X": X,"Y": Y});
    create_point(X, Y);

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解确切的问题,但我会回答标题。

UnderscoreJS是你最好的朋友!

_.find(events, {DATE: "1970"})
//returns 1st object that matches the year: Object {TITLE: "event 1", DATE: "1970"}

_.filter(events, {DATE: "1970"}).length
//returns the number of objects with that year: 3

答案 1 :(得分:0)

我不确定我是否完全理解你的问题,但无论如何我都会试着帮助你...

在我看来,一种可能性是将数据保存在pos_reserved对象中并执行类似的操作



var pos_reserved = {};

// returns if a position is already reserved or not
function isReserved(x, y){
  if (!pos_reserved[x])
    return false;
  
  if (!pos_reserved[x][y])
    return false;
  
  return true;
}

// reserve a position
function reservePosition(x, y, someInfo){
  // only reserve position if it's not already reserved
  if (!isReserved(x, y)){
    // check if you already have points with this x
    if (!pos_reserved[x]){
      // create one if needed
      pos_reserved[x] = {};
    }
  
    // save the point
    pos_reserved[x][y] = someInfo;
  }
  else{
    // dosomething...
  }
}




那就是......我认为它是最好的解决方案,因为你的JSON对象就像一个矩阵......所以你可以轻松访问你之前保存的每个点...

我添加了“someValue'向您表明您可以保存有关此点的信息。你可以给出一个名字或任何你想要的东西......这取决于你,但你不必像使用它那样使用它;)

如果您有疑问,请告诉我们。)

罗曼