【发布时间】:2016-04-19 08:05:11
【问题描述】:
我有一个标准对象,带有嵌套对象。
我正在尝试查找所有包含“Gmt”的键并通过时刻格式化相应的纪元值。
var myObject = {
"suffix" : "mr",
"fname" : "jullian",
"lname" : "exor",
"dobGmt" : 145754294700000
"addressLine1" : "flat 8a",
"street" : "hoxley close",
"rentStartedGmt" : 145754294700000,
"deposit" : "50.00",
"occupation" : "math teacher",
"profession" : {
"careerStartedGmt": 1458755224800000,
"careerEndGmt": 1459854224800000,
},
"salary" : 28000,
"votingDetail" : {
"location" : "virgina",
"votedOnGmt": 1874585224800000,
"votedFor" : "world wildlife foundation"
}
}
我可以使用标准 JS 循环遍历上面的键(见下文),它会找到 rentStartedGmt 但会错过 profession.careerStartedGmt、profession.careerEndGmt 和 votingDetail.votedOnGmt
var myObjectClone = _.clone(myObject);
for (var key in myObjectClone) {
if (key.indexOf("Gmt") !== -1) {
var timeValue = myObjectClone[key];
timeValue = timeValue.format('DD-MM-YY HH:mm:ss');
}
}
我正在使用 lodash,有什么方法可以找到所有包含“Gmt”的键,修改 epoch,然后返回对象克隆。
更新:使用递归:
function findGmt(data) {
for (var key in data) {
var v = data[key];
if (key.indexOf("Gmt") !== -1) {
}
if(v && typeof v === "object") {
findGmt(v);
}
}
}
findGmt(myObjectClone);
【问题讨论】:
-
你需要递归。没有一个 lodash 方法支持递归。所以你必须编写自己的递归函数。
-
@hindmost - 啊,我明白了,谢谢你的建议。已通过递归尝试进行更新。
标签: javascript momentjs lodash