创建根据时间参数计算对象状态的函数
Create function that calculates an objects state depending on time parameter
>假设我有一个看起来像这样的对象:
var ticket = {
state:"Closed",
opened:"2014-01-12",
assiged:"2014-02-03",
resolved:"2014-04-22",
propose:"",
closed:"2014-05-03"
tmpstateholder:""
};
我想要的是一个在形式 2014-02-25 上给出字符串参数的函数
计算票证在该日期所处的状态,然后返回对象。
function calculateState(d,datestring){
//Calculate in what state the object is in depending on the date string
//For example in this case when datestring = 2014-02-25 it should return;
d.tmpstateholder="assiged"
return d;
}
另请注意,如果票证不必转到所有州,例如在上面的示例中,票证尚未进入建议的状态。
请注意,票证对象也可能如下所示。
var ticket = {
state:"Closed",
opened:"2014-01-12",
assiged:"",
resolved:"",
propose:"",
closed:"2014-05-03",
tmpstateholder:""
};
您可以简单地枚举对象,过滤掉那些日期晚于我们正在寻找的时间的状态,并取其余的最大值:
function calculateState(d, datestring) {
var maxdate = "", state = "";
for (var s in d)
if (d[s] <= datestring && d[s] > maxdate) {
maxdate = d[s];
state = s;
}
return state;
}
现在,如果您的对象不仅包含状态,还包含其他属性(不保存日期),则需要匹配类似日期的属性值:
…
if (/^'d{4}-'d{2}-'d{2}/.test(d[s]) && d[s] <= …
或者创建一组所有可能的状态并迭代它而不是对象的属性名称:
…
var allStates = ["opened", "assiged", "resolved", "proposed", "closed"];
for (var i=0; i<allStates.length; i++) {
var s = allStates[i];
…
如果你有很多可能的状态,并且它们只能以一个顺序运行,你也可以在该状态列表中使用二叉搜索。
相关文章:
- js,对象's状态监视
- PJAX:记住其他对象状态
- 经典方法的目的|与对象状态的关系
- 历史推送状态不在独立的 location.hash 或 location.href 中,而是在 Location 对象本
- XMLHttpRequest 对象状态代码为 0
- 在 Redux 状态下存储具有原型函数的对象
- 推送嵌套对象时的反应状态更改
- redux 中状态对象的结构
- ajax - 请求对象就绪状态不变
- 如何将状态对象/数据传递给(异步)ajax 回调
- 如何使用UI路由器将对象传递到状态
- Reactjs:在修改对象之前,是否需要复制处于组件状态的对象
- XMLHttpRequest抛出InvalidSateError说“;对象状态必须打开”;
- Web 应用程序需要记住对象状态 - 需要解决方案建议
- 创建根据时间参数计算对象状态的函数
- 在 JavaScript DOJO 中维护对象状态
- 基于对象状态在js/html中动态创建按钮
- 记录对象状态以进行序列化
- 不能访问React对象状态上的object属性,即使它存在.返回未定义
- jquery运行时对象状态维护