我有一个标准对象,带有嵌套对象。
我试图找到所有的键,其中包含‘格林尼治时间’,并格式化相应的时代值通过片刻。
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”的键,修改时代,并返回对象克隆。
更新:使用递归:
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);发布于 2016-04-19 08:54:13
我不知道有什么特别的方法.
但是在vanilla中有一个递归函数:
var obj = {
"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"
}
}
function flatK(o) {
return Object.keys(o).reduce(function(ac, x) {
if (typeof o[x] === 'object')
ac.push(flatK(o[x]).join());
else
ac.push(x);
return ac
}, [])
}
console.log(flatK(obj))
然后,您可以过滤输出,在键中查找“GMT”(但我会让您这样做)
https://stackoverflow.com/questions/36712249
复制相似问题