![](/img/trans.png)
[英]How to get the sum of a key of consecutive array object and remove the duplicates?
[英]How to get the count of repeated key values of array object of consecutive elements?
我有一個數組結構:-
var location = [ {
"latitude" : 21.112,
"longitude" : 79.07,
"time" : "8:13AM",
"time1" : "8:13AM"
},
{
"latitude" : 21.111,
"longitude" : 79.07,
"time" : "8:20AM",
"time1" : "8:20AM"
},
{
"latitude" : 21.111,
"longitude" : 79.07,
"time" : "8:34AM",
"time1" : "8:34AM"
},
{
"latitude" : 21.111,
"longitude" : 79.07,
"time" : "8:41AM",
"time1" : "8:41AM"
},
{
"latitude" : 21.109,
"longitude" : 79.07,
"time" : "8:48AM",
"time1" : "8:48AM"
},
{
"latitude" : 21.108,
"longitude" : 79.07,
"time" : "8:55AM",
"time1" : "8:55AM"
},
{
"latitude" : 21.108,
"longitude" : 79.069,
"time" : "9:02AM",
"time1" : "9:02AM"
},
{
"latitude" : 21.107,
"longitude" : 79.069,
"time" : "9:09AM",
"time1" : "9:09AM"
},
{
"latitude" : 21.106,
"longitude" : 79.069,
"time" : "9:16AM",
"time1" : "9:16AM"
},
{
"latitude" : 21.105,
"longitude" : 79.069,
"time" : "9:23AM",
"time1" : "9:23AM"
},
{
"latitude" : 21.104,
"longitude" : 79.069,
"time" : "9:30AM",
"time1" : "9:30AM"
},
{
"latitude" : 21.105,
"longitude" : 79.069,
"time" : "9:37AM",
"time1" : "9:37AM"
},
{
"latitude" : 21.105,
"longitude" : 79.07,
"time" : "9:44AM",
"time1" : "9:44AM"
},
{
"latitude" : 21.105,
"longitude" : 79.071,
"time" : "9:51AM",
"time1" : "9:51AM"
},
{
"latitude" : 21.106,
"longitude" : 79.072,
"time" : "9:58AM",
"time1" : "9:58AM"
}]
我要數數。 每個 object 中經緯度的次數相同。 它應該返回數組,因為它只是帶有額外的計數鍵。 例如-預期結果
var location = [ {
"latitude" : 21.112,
"longitude" : 79.07,
"time" : "8:13AM",
"time1" : "8:13AM",
"count":1
},
{
"latitude" : 21.111,
"longitude" : 79.07,
"time" : "8:20AM",
"time1" : "8:20AM",
"count":3
},
{
"latitude" : 21.111,
"longitude" : 79.07,
"time" : "8:34AM",
"time1" : "8:34AM",
"count":3
},
{
"latitude" : 21.111,
"longitude" : 79.07,
"time" : "8:41AM",
"time1" : "8:41AM",
"count":3
},..]
我試過這個代碼 -
const resultarray = Object.values(location.reduce((a, b) => {
a[b.latitude + b.longitude] = Object.assign(b, {count: (a[b.latitude + b.longitude] || {count: 0}).count + 1});
return a;
}, {}));
console.log(resultarray)
但這會返回具有計數的元素的唯一對象。 我想要每個 object 與密鑰計數一樣。
您可以使用 object 對出現次數進行計數,並將 map 計數到相同的位置。
const getKey = o => ['latitude', 'longitude'].map(k => o[k]).join('|'), locations = [{ latitude: 21.112, longitude: 79.07, time: "8:13AM", time1: "8:13AM" }, { latitude: 21.111, longitude: 79.07, time: "8:20AM", time1: "8:20AM" }, { latitude: 21.111, longitude: 79.07, time: "8:34AM", time1: "8:34AM" }, { latitude: 21.111, longitude: 79.07, time: "8:41AM", time1: "8:41AM" }, { latitude: 21.109, longitude: 79.07, time: "8:48AM", time1: "8:48AM" }, { latitude: 21.108, longitude: 79.07, time: "8:55AM", time1: "8:55AM" }, { latitude: 21.108, longitude: 79.069, time: "9:02AM", time1: "9:02AM" }, { latitude: 21.107, longitude: 79.069, time: "9:09AM", time1: "9:09AM" }, { latitude: 21.106, longitude: 79.069, time: "9:16AM", time1: "9:16AM" }, { latitude: 21.105, longitude: 79.069, time: "9:23AM", time1: "9:23AM" }, { latitude: 21.104, longitude: 79.069, time: "9:30AM", time1: "9:30AM" }, { latitude: 21.105, longitude: 79.069, time: "9:37AM", time1: "9:37AM" }, { latitude: 21.105, longitude: 79.07, time: "9:44AM", time1: "9:44AM" }, { latitude: 21.105, longitude: 79.071, time: "9:51AM", time1: "9:51AM" }, { latitude: 21.106, longitude: 79.072, time: "9:58AM", time1: "9:58AM" }], counts = locations.reduce((r, o) => { const key = getKey(o); r[key] = (r[key] || 0) + 1; return r; }, {}), result = locations.map(o => ({... o, count: counts[getKey(o)] })); console.log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.