我有以下数组
0:{VERSION: 1, CURRENT_DATE: "1900-01-01", CURRENT_ACTIVITY_DATE: "2017-06-22"},
1:{VERSION: 2, PREVIOUS_DATE: "1900-01-01", PREVIOUS_ACTIVITY_DATE: "2017-06-22"}
我需要更改日期格式并使用新的格式化日期更新数组。任何想法都会有所帮助。
我面临的确切问题是数组索引在每一行都不一样。该代码适用于“PREVIOUS_ACTIVITY_DATE”,但对于“CURRENT_ACTIVITY_DATE”,日期格式保持不变,不会更改。如果我有更多具有不同索引的行,我需要更改所有行的格式
我正在使用moment.js更改格式,而且该部分工作正常。
提前致谢。
答案 0 :(得分:1)
只需在数组中使用 Array#map()
method ,它就会更新数组中的每个项目日期属性:
arr.map(function(el) {
if (el["PREVIOUS_ACTIVITY_DATE"])
el["PREVIOUS_ACTIVITY_DATE"] = new Date(el["PREVIOUS_ACTIVITY_DATE"]);
if (el["PREVIOUS_DATE"])
el["PREVIOUS_DATE"] = new Date(el["PREVIOUS_DATE"]);
if (el["CURRENT_ACTIVITY_DATE"])
el["CURRENT_ACTIVITY_DATE"] = new Date(el["CURRENT_ACTIVITY_DATE"]);
if (el["CURRENT_DATE"])
el["CURRENT_DATE"] = new Date(el["CURRENT_DATE"]);
return el;
});
<强>演示:强>
const arr = [{
VERSION: 1,
CURRENT_DATE: "1900-01-01",
CURRENT_ACTIVITY_DATE: "2017-06-22"
},
{
VERSION: 2,
PREVIOUS_DATE: "1900-01-01",
PREVIOUS_ACTIVITY_DATE: "2017-06-22"
}
];
arr.map(function(el) {
if (el["PREVIOUS_ACTIVITY_DATE"])
el["PREVIOUS_ACTIVITY_DATE"] = new Date(el["PREVIOUS_ACTIVITY_DATE"]);
if (el["PREVIOUS_DATE"])
el["PREVIOUS_DATE"] = new Date(el["PREVIOUS_DATE"]);
if (el["CURRENT_ACTIVITY_DATE"])
el["CURRENT_ACTIVITY_DATE"] = new Date(el["CURRENT_ACTIVITY_DATE"]);
if (el["CURRENT_DATE"])
el["CURRENT_DATE"] = new Date(el["CURRENT_DATE"]);
return el;
});
console.log(arr);
注意:强>
您需要检查对象中是否存在密钥。
我在这里以new Date(el["PREVIOUS_ACTIVITY_DATE"])
为例,
您只需要使用momentjs
syantax更改它。
答案 1 :(得分:1)
如果您不知道密钥是什么,可以通过拨打var keys = Object.keys(array[0])
来访问它们。
如果你想修改ex。当前日期,然后你可以通过以下方式完成:
var currentDateKey = keys[1];
array[0][currentDateKey] = "newDateString";
并且您的数组将被修改为新值。
答案 2 :(得分:0)
您可以选择以下方法:
var myArray = [
{VERSION: 1, CURRENT_DATE: "1900-01-01", CURRENT_ACTIVITY_DATE: "2017-06-22"},
{VERSION: 2, PREVIOUS_DATE: "1900-01-01", PREVIOUS_ACTIVITY_DATE: "2017-06-22"}
];
//Format all entries with the desired keys...
var formatKeys = ["CURRENT_DATE","CURRENT_ACTIVITY_DATE","PREVIOUS_DATE","PREVIOUS_ACTIVITY_DATE"];
// Iterate through your array
for(var i = 0; i < myArray.length; i++){
// Iterate through the desired keys to format
for(var key in formatKeys){
if(myArray[i][formatKeys[key]] !== undefined)
myArray[i][formatKeys[key]].format(); // Your format call
}
}