2017-10-10 57 views
-3

创建新的对象我有一个像下面获取最小和最大的日期,并在Javascript

SpecialObj= 
{ 
    "dataarray-345": 
    [ 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
     {lqd: 5000, date: "2017-08-18 10:00:00"}, 
     {lqd: 5500, date: "2017-08-18 10:30:00"}, 
     {lqd: 4500, date: "2017-08-18 11:00:00"}, 
     {lqd: 1500, date: "2017-08-18 11:30:00"} 
    ], 
    "dataarray-123": 
    [ 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
     {lqd: 5000, date: "2017-08-18 10:00:00"}, 
     {lqd: 5500, date: "2017-08-18 10:30:00"}, 
     {lqd: 4500, date: "2017-08-18 11:00:00"} 
    ], 
    "dataarray-127": 
    [ 
     {lqd: 5000, date: "2017-08-18 10:00:00"}, 
     {lqd: 5500, date: "2017-08-18 10:30:00"}, 
     {lqd: 4500, date: "2017-08-18 11:00:00"}, 
     {lqd: 1500, date: "2017-08-18 11:30:00"}, 
     {lqd: 2500, date: "2017-08-18 12:00:00"}, 
     {lqd: 3500, date: "2017-08-18 12:30:00"}, 
     {lqd: 8500, date: "2017-08-18 13:00:00"}, 
     {lqd: 9500, date: "2017-08-18 13:30:00"}, 
     {lqd: 6500, date: "2017-08-18 14:00:00"} 
    ] 
} 

每个DataArray中-345,于DataArray-123,经过比对DataArray中-127需要恶魔的一个对象最小和最大的日期和创建像下面的一个新的对象......

SpecialObj: 
{ 
    dataarray-345: 
    [ 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
     {lqd: 6500, date: "2017-08-18 14:00:00"} 
    ], 
    dataarray-123: 
    [ 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
     {lqd: 6500, date: "2017-08-18 14:00:00"} 
    ], 
    dataarray-127: 
    [ 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
     {lqd: 6500, date: "2017-08-18 14:00:00"} 
    ] 
} 

这意味着所有的对象应该具有的最小和最大的数据集进行更新。

你能帮我创建这个对象用简单的JavaScript。

在此先感谢...

+0

为什么你会希望所有对象具有相同的数据 – juvian

+1

这不是有效的JSON语法。那些实际上是对象的数组吗? – Bergi

+1

是的,我们可以帮助您解决您的代码问题。但是,您需要为此发布它。你甚至试图自己解决这个问题吗? – Bergi

回答

1

那么你可以做这样的事情:遍历所有的对象属性,重申他们的阵列和永远保持目前的最小值和最大值发现。然后用新格式创建另一个对象。

请注意,在此解决方案中,我使用相同的最小和最大对象来填充新的对象数组,因此如果您打算更改其中一个对象的值,则更改将反映其他对象以及它们相同参考。

var SpecialObj = 
 
{ 
 
    "obj-1": [ 
 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
 
     {lqd: 5000, date: "2017-08-18 10:00:00"}, 
 
     {lqd: 5500, date: "2017-08-18 10:30:00"}, 
 
     {lqd: 4500, date: "2017-08-18 11:00:00"}, 
 
     {lqd: 1500, date: "2017-08-18 11:30:00"} 
 
    ], 
 
    "obj-2": 
 
    [ 
 
     {lqd: 1000, date: "2017-08-18 09:30:00"}, 
 
     {lqd: 5000, date: "2017-08-18 10:00:00"}, 
 
     {lqd: 5500, date: "2017-08-18 10:30:00"}, 
 
    ], 
 
    "obj-3": 
 
    [ 
 
     {lqd: 5000, date: "2017-08-18 10:00:00"}, 
 
     {lqd: 5500, date: "2017-08-18 10:30:00"}, 
 
     {lqd: 4500, date: "2017-08-18 11:00:00"}, 
 
     {lqd: 1500, date: "2017-08-18 11:30:00"}, 
 
     {lqd: 2500, date: "2017-08-18 12:00:00"}, 
 
     {lqd: 3500, date: "2017-08-18 12:30:00"}, 
 
     {lqd: 8500, date: "2017-08-18 13:00:00"}, 
 
     {lqd: 9500, date: "2017-08-18 13:30:00"}, 
 
     {lqd: 6500, date: "2017-08-18 14:00:00"} 
 
    ] 
 
} 
 

 
var min = null, max = null; 
 

 
for (var key in SpecialObj) { 
 
    var arr = SpecialObj[key]; 
 
    arr.forEach(function(obj){ 
 
     if (min == null || new Date(obj.date) < new Date(min.date)) min = obj; 
 
     if (max == null || new Date(obj.date) > new Date(max.date)) max = obj; 
 
    }) 
 
} 
 

 
var newObj = {} 
 

 
for (var key in SpecialObj) { 
 
    newObj[key] = [min, max]; 
 
} 
 

 
console.log(newObj)