我有一個具有date
屬性(以毫秒爲單位)的對象數組。請注意,前三個對象具有相同的日期,但不同的是value
。使用lodash創建填充缺失值的新陣列
var data = [
{"date":"1420070400000","value":53,"lat":"41.8089","lon":"-88.0111","regType":"Client","jobRole":"Other"},
{"date":"1420070400000","value":376,"lat":"41.8089","lon":"-88.0111","regType":"Client","jobRole":"Other"},
{"date":"1420070400000","value":43,"lat":"41.8089","lon":"-88.0111","regType":"Client","jobRole":"Other"},
{"date":"1420156800000","value":410,"lat":"41.8089","lon":"-88.0111","regType":"Client","jobRole":"Other"},
{"date":"1420329600000","value":210,"lat":"41.8089","lon":"-88.0111","regType":"Client","jobRole":"Other"}
];
console.log(data)
示出該用於第一對象:
date: "1420070400000"jobRole: "Other"lat: "41.8089"lon: "-88.0111"regType: "Client"value: 53
然後,我有日期的以毫秒爲單位覆蓋第一陣列的最早和最遲的日期之間的所有可能的日期的第二陣列。
var earliestDate = 1420070400000;
var latestDate = 1420329600000;
var list = [];
for (var i = earliestDate; i <= latestDate; i += 86400000) {
list.push(i);
}
而且console.log(list)
顯示這對於數組:
[1420070400000, 1420156800000, 1420243200000, 1420329600000]
注意的是,第三次約會1420243200000
是最早和最晚日期之間存在的日期,而不是原始對象數組英寸原始數組不包含範圍中的每個日期。
我想要一個對象的結果數組(如第一個),但與範圍中的每個日期。所以,當一個日期不存在於原始數組中時,現在它已經有了新的值並賦值給它的其他屬性。
我正在嘗試在lodash中使用_.find
。
var newData = list.map(function(dateValue) {
return _.find(data, { date: dateValue }) || {date: dateValue, value: 0, lat: "no lat value", lon: "no lon value", regType: "no regType value", jobRole: "no jobRole value" };
});
然而,console.log(newData);
顯示了這個(這裏例如第一個對象),這是分配新值到現有的約會,我不想:
date: 1420070400000jobRole: "no jobRole value"lat: "no lat value"lon: "no lon value"regType: "no regType value"value: 0
而且,當原來有五個時,只返回4個對象。我錯過了什麼?
這裏是您可以檢查元素的JSFIDDLE。謝謝!
你提供了錯誤的jsfiddle鏈接:http://jsfiddle.net/airwwwave/y8mbhub7/1/ –
哎呀,對不起。剛剛更新鏈接以刪除鏈接末尾的「嵌入/結果/」部分。謝謝。希望現在如果你檢查頁面上的元素,你可以在控制檯中看到東西。道歉。 – airwwwave
我還應該說我沒有結婚使用lodash,這正是我根據本教程嘗試的:http://www.d3noob.org/2014/04/adding-in-zero-values-into- time-series.html – airwwwave