Javascript 从嵌套对象获取所有唯一密钥
我有一个目标:Javascript 从嵌套对象获取所有唯一密钥,javascript,object,unique,lodash,Javascript,Object,Unique,Lodash,我有一个目标: { "apple": { "0": { "2018-04-25 19:51:38": { "x": "38.0", "y": "23.0" }, "2018-04-25 19:51:39": { "x": "NaN", "y": "NaN" }, "2018-04-25 19:51:40": { "x": "NaN",
{
"apple": {
"0": {
"2018-04-25 19:51:38": {
"x": "38.0",
"y": "23.0"
},
"2018-04-25 19:51:39": {
"x": "NaN",
"y": "NaN"
},
"2018-04-25 19:51:40": {
"x": "NaN",
"y": "NaN"
}
},
"5": {
"2018-04-25 19:51:38": {
"x": "50.0",
"y": "35.0"
},
"2018-04-25 19:51:43": {
"x": "21.0",
"y": "3.0"
}
},
"6": {
"2018-04-25 19:51:34": {
"x": "30.0",
"y": "15.0"
},
"2018-04-25 19:51:39": {
"x": "NaN",
"y": "NaN"
},
"2018-04-25 19:52:40": {
"x": "22.0",
"y": "20.0"
},
"2018-04-25 19:52:42": {
"x": "33.0",
"y": "45.0"
}
}
},
"team": {
"2": {
"2018-04-25 19:51:35": {
"x": "32.0",
"y": "25.0"
},
"2018-04-25 19:51:36": {
"x": "33.0",
"y": "40.0"
},
"2018-04-25 19:51:37": {
"x": "12.0",
"y": "24.0"
},
"2018-04-25 19:51:38": {
"x": "33.0",
"y": "45.0"
}
},
"3": {
"2018-04-25 19:51:35": {
"x": "2.0",
"y": "3.0"
},
"2018-04-25 19:51:36": {
"x": "4.0",
"y": "5.0"
},
"2018-04-25 19:51:37": {
"x": "12.0",
"y": "15.0"
},
"2018-04-25 19:51:38": {
"x": "33.0",
"y": "45.0"
}
},
"4": {
"2018-04-25 19:51:35": {
"x": "20.0",
"y": "30.0"
},
"2018-04-25 19:51:36": {
"x": "41.0",
"y": "35.0"
},
"2018-04-25 19:51:37": {
"x": "32.0",
"y": "65.0"
},
"2018-04-25 19:51:38": {
"x": "43.0",
"y": "49.0"
}
},
"5": {
"2018-04-25 19:51:35": {
"x": "21.0",
"y": "33.0"
},
"2018-04-25 19:51:36": {
"x": "31.0",
"y": "12.0"
},
"2018-04-25 19:51:37": {
"x": "34.0",
"y": "54.0"
},
"2018-04-25 19:51:38": {
"x": "93.0",
"y": "22.0"
}
}
}
}
我想要的是两个独特的时间戳数组:一个用于苹果,一个用于团队。
因此:
正如你们所看到的,苹果和团队内部的关键点不是顺序的。
我该怎么做?我唯一的想法是使用查找,但我肯定我错了
我也可以使用Lodash,您可以参考以下代码。如果有多个对象,如apple、Set,则可以将代码移动到函数中,而无需反复编写 var obj={ 苹果公司:{ 0: { 2018-04-25 19:51:38: { x:38.0, y:23.0 }, 2018-04-25 19:51:39: { x:楠, y:楠 }, 2018-04-25 19:51:40: { x:楠, y:楠 } }, 5: { 2018-04-25 19:51:38: { x:50.0, y:35.0 }, 2018-04-25 19:51:43: { x:21.0, y:3.0 } }, 6: { 2018-04-25 19:51:34: { x:30.0, y:15.0 }, 2018-04-25 19:51:39: { x:楠, y:楠 }, 2018-04-25 19:52:40: { x:22.0, y:20.0 }, 2018-04-25 19:52:42: { x:33.0, y:45.0 } } }, 小组:{ 2: { 2018-04-25 19:51:35: { x:32.0, y:25.0 }, 2018-04-25 19:51:36: { x:33.0, y:40.0 }, 2018-04-25 19:51:37: { x:12.0, y:24.0 }, 2018-04-25 19:51:38: { x:33.0, y:45.0 } }, 3: { 2018-04-25 19:51:35: { x:2.0, y:3.0 }, 2018-04-25 19:51:36: { x:4.0, y:5.0 }, 2018-04-25 19:51:37: { x:12.0, y:15.0 }, 2018-04-25 19:51:38: { x:33.0, y:45.0 } }, 4: { 2018-04-25 19:51:35: { x:20.0, y:30.0 }, 2018-04-25 19:51:36: { x:41.0, y:35.0 }, 2018-04-25 19:51:37: { x:32.0, y:65.0 }, 2018-04-25 19:51:38: { x:43.0, y:49.0 } }, 5: { 2018-04-25 19:51:35: { x:21.0, y:33.0 }, 2018-04-25 19:51:36: { x:31.0, y:12.0 }, 2018-04-25 19:51:37: { x:34.0, y:54.0 }, 2018-04-25 19:51:38: { x:93.0, y:22.0 } } } }; var k=[]; Object.keysobj.apple.forEachel=>{ k=k.concatObject.keysobj.apple[el]; }; var appleTimeStamps=新Setk; appleTimeStamps=Array.fromappleTimeStamps; console.logappleTimeStamps; var j=[]; Object.keysobj.team.forEachel=>{ j=j.concatObject.keysobj.team[el]; }; var teamTimeStamps=新Setj; teamTimeStamps=Array.fromteamTimeStamps;
console.logteamTimeStamps 也许是这样的: 常量时间戳=obj=> […新的一套 Object.valuesobj .mapObject.keys .reducea,b=>a.concatb,[///某天:`flatten` ] 该公司的一名名名为,2018年4月4日4月25日19:51:38::{x:38.0,y:23.0},2018年4月4日4-4-25 19:25 19:19:19:19:19:39:{x:Na,y:NaN,y:NaNan,苹果:{苹果:{苹果公司,苹果公司,苹果公司,苹果公司,苹果:::::::{{苹果公司,苹果::::::{,苹果::{,苹果::{{,苹果:::::::::{{,苹果::::{,苹果::{,苹果:::::{{,苹果:::::{{,苹果::{,苹果::::{{,苹果::::::::{以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下,苹果::::::39:{x:NaN,y:NaN},2018-04-25 19:52:40:[x:33.0,y:45.0}},团队:{2:{2:{2:{2:{2:{2:{2:{2:{2:{4:22:22.0,y:22.0,y:22:22.0,y:20.0,y:20.0,y:20.0},2018-04-04-25 19:51:51:51:36:{0,y:40.0,y:40.0,2018-2018-2018-2018-4-4-4-4-4-4-4-25-25-25-25 19-25-25-25-25 19:51:51:51:51:51:51:51:51:51:51:51:37:37:{{x:12.12.0,12.0,12.0,y:12.0,y:12.0,y:12.0,y:12.0,y:10,2018-04-2519:51:36:{x:4.0,y:5.0},2018-04-2519:51:37:[x:33.0,y:45.0},4:{4:{4:{4:{4:{4:{2018-4-4-4-25 19:51:51:35:{4:{4:)4:{4:{2018-4-4:12:12:12.0,y:12:12:12:12:12.0,y:12:12:12.0,y:12:12:12.0,y:12:12.0,y:12:12:12.0,y:15.0,y:15.0,y:15.0,y:15.0,y:15.0,y:15.0,y:15.0,y:15.0 0,y:15.0 0,y:15.0,y:15.0 0,y:15.0,y:15.0,y:15.0},y:15.0},0,0,5,,,2018-04-2519:51:36:{x:31.0,y:12.0},2018-04-2519:51:37:{x:34.0,y:54.0},2018-04-2519:51:38:{x:93.0,y:22.0} console.logj.apple
console.logtimestampsobj.team使用lodash,您可以使用以下方法创建函数: 使用获取时间戳数组 删除重复项 常量时间戳=\ u0.flow[ o=>u.flatMapo,u.keys, _.uniq, ] 该公司的一名名名为,2018年4月4日4月25日19:51:38::{x:38.0,y:23.0},2018年4月4日4-4-25 19:25 19:19:19:19:19:39:{x:Na,y:NaN,y:NaNan,苹果:{苹果:{苹果公司,苹果公司,苹果公司,苹果公司,苹果:::::::{{苹果公司,苹果::::::{,苹果::{,苹果::{{,苹果:::::::::{{,苹果::::{,苹果::{,苹果:::::{{,苹果:::::{{,苹果::{,苹果::::{{,苹果::::::::{以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下,苹果::::::39:{x:NaN,y:NaN},2018-04-25 19:52:40:[x:33.0,y:45.0}},团队:{2:{2:{2:{2:{2:{2:{2:{2:{2:{4:22:22.0,y:22.0,y:22:22.0,y:20.0,y:20.0,y:20.0},2018-04-04-25 19:51:51:51:36:{0,y:40.0,y:40.0,2018-2018-2018-2018-4-4-4-4-4-4-4-25-25-25-25 19-25-25-25-25 19:51:51:51:51:51:51:51:51:51:51:51:37:37:{{x:12.12.0,12.0,12.0,y:12.0,y:12.0,y:12.0,y:12.0,y:10,2018-04-2519:51:36:{x:4.0,y:5.0},2018-04-2519:51:37:{x:12.0,y:15.0},201 2008年10月4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-25 19-25 19:51:51:35::{{{10:20.0,y:30.0,y:30.0,y:30.0,y:30.0,y:30.0,y:30.0,2007年10-4-4-4-4-4-4-4-4-4-4-4-4-4-4-10 10 10 10 10:30:30.0,y:0 0 0 0 0,0 0 0 0,2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007年7,2008 2008年7 7 7 7 7 7 7,2008 2008年7 7 7 7 7 7 7 7,2008年7 7 7 7 7 7 7 7 7 7 7 7 7 7,2008年10-4-4-4-4-4-4-4-4-4-4-4-4-4-4-10 y:12.0},2018-04-2519:51:37:{x:34.0,y:54.0},2018-04-2519:51:38:{x:93.0,y:22.0} console.logj.apple console.logj.team
const appleTimestamps = ["2018-04-25 19:51:34", "2018-04-25 19:51:37", "2018-04-25 19:51:38", "2018-04-25 19:51:39", "2018-04-25 19:51:40", "2018-04-25 19:51:43", "2018-04-25 19:52:40", "2018-04-25 19:52:42"]
const teamTimestamps = ["2018-04-25 19:51:35", "2018-04-25 19:51:36", "2018-04-25 19:51:37", "2018-04-25 19:51:38"]