假设您有listA
, 和一个定义的“列”数组:
var listA = [{
name: "Mike",
exercisedateandtime: 1299233593000,
exercise: "Jumping Jacks",
numsets: 5
}, {
name: "Charles",
exercisedateandtime: 1299233593000,
exercise: "Swimming",
numsets: 2
}, {
name: "Charles",
exercisedateandtime: 1299233593000,
exercise: "Swimming",
numsets: 6
}, {
name: "Mike",
exercisedateandtime: 1299237012000,
exercise: "Running",
numsets: 5
}, {
name: "William",
exercisedateandtime: 1299237320000,
exercise: "Fishing",
numsets: 2
}, {
name: "William",
exercisedateandtime: 1299237611000,
exercise: "Motor Boating",
numsets: 6
}, {
name: "Charles",
exercisedateandtime: 1299237611000,
exercise: "Swimming",
numsets: 4
}];
var columns = ["Exercise Date", "Mike", "Charles", "William"]
目标是从列表 A 生成单个数组,这样任何匹配的时间都将被“折叠”。在这种情况下,输出应该是:
var output = [[1299233593000, 5, 2, null]
[1299237012000, 6, null, null]
[1299237012000, 6, null, 0]
[1299237320000, null, null, 2]
[1299237320000, null, null, 2]
[1299237611000, null, 4, 6]]
请注意,当一个或多个人具有相同的时间“1299233593000”时,“输出”如何解释它并将它们“折叠”成一个数组。空值显示exercisedatetimes
个人没有任何“numsets”的地方。不为空的值是个人当时拥有“numsets”的值。
在允许变量名(比如 Fred 将他的信息放入 listA)和变量列(假设您可以从“columns”数组中删除“William”并且它不会出现在输出中)。
理想的解决方案是在速度和所需处理方面的最佳性能。