我可以创建一个函数来替换调用它的对象吗?

时间:2018-05-15 13:28:30

标签: javascript

当一些新的JSON到来时,我只想将所有字符串日期转换为日期对象。如果我能创建一个函数来替换使用解析日期对象调用它的字符串,我会更喜欢它。这可能吗?

SELECT REPLACE(REPLACE('Select [Field1] from [GL].[table2]', '[', ''), ']', '') final_val 
 FROM dual
/

2 个答案:

答案 0 :(得分:1)

您可能只使用实用程序而不是更改原型:

 function parseDates(obj, ...keys) {
   const result = {...obj};
   for(const key of keys)
      result[key] = new Date(obj[key]);
   return result;
 }

可用作:

parseDates({ createdAt: 123456789 }, "createdAt");

或者更换一个:

obj = parseDates(obj, "createdAt");

答案 1 :(得分:1)

你可以使用JSON.parse的revive,它会返回Date个对象而不是结果中的字符串

function revive(key, value) {
	var a;
	if (typeof value === "string") {
		a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
		if (a) {
			return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
		}
	}
	return value;
}

console.log(JSON.parse("\"2018-05-15T13:40:30.052Z\"", revive) instanceof Date);

此示例取自https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js

相关问题