我正在使用包含多个事件(名称和日期)的数组来处理每个事件,我必须在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);
答案 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'向您表明您可以保存有关此点的信息。你可以给出一个名字或任何你想要的东西......这取决于你,但你不必像使用它那样使用它;)
如果您有疑问,请告诉我们。)
罗曼