2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
要找到uniqs 中的一個(gè)(我們稱之為 s oneApip),只需檢查s的第一個(gè)元素data- 您不需要 Set 或迭代所有這些元素。然后迭代dataand,對(duì)于每個(gè)元素,添加到一個(gè)或另一個(gè)集合,具體取決于它是否apip匹配oneApip:
var data=[{time:"1571965891.8420029",rssi:"30",id:"123456789",apip:"172.172.172.172.1"},{time:"1571971066.8283374",rssi:"30",id:"100",apip:"172.172.172.172.2"},{time:"1571965476.4821894",rssi:"30",id:"123456789",apip:"172.172.172.172.2"},{time:"1571965894.140705",rssi:"30",id:"123456789",apip:"172.172.172.172.2"},{time:"1571965893.1654441",rssi:"30",id:"123456789",apip:"172.172.172.172.1"},{time:"1571970952.7499905",rssi:"30",id:"9999999",apip:"172.172.172.172.1"},{time:"1571965888.1338017",rssi:"30",id:"123456789",apip:"172.172.172.172.2"},{time:"1571970925.342063",rssi:"30",id:"66666",apip:"172.172.172.172.1"},{time:"1571965890.158157",rssi:"30",id:"123456789",apip:"172.172.172.172.1"}];
const oneApip = data[0].apip;
const set1 = new Set();
const set2 = new Set();
for (const { apip, id } of data) {
(apip === oneApip ? set1 : set2).add(id);
}
const uniq1 = [...set1];
const uniq2 = [...set2];
console.log(uniq1);
console.log(uniq2);
更一般地,對(duì)于任意數(shù)量的apips,創(chuàng)建一個(gè)由 索引的對(duì)象apip,其值為集合:
var data=[{time:"1571965891.8420029",rssi:"30",id:"123456789",apip:"172.172.172.172.1"},{time:"1571971066.8283374",rssi:"30",id:"100",apip:"172.172.172.172.2"},{time:"1571965476.4821894",rssi:"30",id:"123456789",apip:"172.172.172.172.2"},{time:"1571965894.140705",rssi:"30",id:"123456789",apip:"172.172.172.172.2"},{time:"1571965893.1654441",rssi:"30",id:"123456789",apip:"172.172.172.172.1"},{time:"1571970952.7499905",rssi:"30",id:"9999999",apip:"172.172.172.172.1"},{time:"1571965888.1338017",rssi:"30",id:"123456789",apip:"172.172.172.172.2"},{time:"1571970925.342063",rssi:"30",id:"66666",apip:"172.172.172.172.1"},{time:"1571965890.158157",rssi:"30",id:"123456789",apip:"172.172.172.172.1"}];
const grouped = {};
for (const { apip, id } of data) {
if (!grouped[apip]) {
grouped[apip] = new Set();
}
grouped[apip].add(id);
}
const arrs = Object.entries(grouped)
.map(([apip, set]) => [apip, [...set]]);
console.log(arrs);

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
你可以做:
const data = [{"time": "1571965891.8420029","rssi": "30","id": "123456789","apip": "172.172.172.172.1"}, {"time": "1571971066.8283374","rssi": "30","id": "100","apip": "172.172.172.172.2"}, {"time": "1571965476.4821894","rssi": "30","id": "123456789","apip": "172.172.172.172.2"}, {"time": "1571965894.140705","rssi": "30","id": "123456789","apip": "172.172.172.172.2"}, {"time": "1571965893.1654441","rssi": "30","id": "123456789","apip": "172.172.172.172.1"}, {"time": "1571970952.7499905","rssi": "30","id": "9999999","apip": "172.172.172.172.1"}, {"time": "1571965888.1338017","rssi": "30","id": "123456789","apip": "172.172.172.172.2"}, {"time": "1571970925.342063","rssi": "30","id": "66666","apip": "172.172.172.172.1"}, {"time": "1571965890.158157","rssi": "30","id": "123456789","apip": "172.172.172.172.1"}]
const sets = data.reduce(
(a, { apip, id }, _, arr) => ((apip === arr[0].apip ? a.one : a.two).add(id), a),
{
one: new Set(),
two: new Set()
}
),
result = {
uniqDataFromAP1: [...sets.one],
uniqDataFromAP2: [...sets.two]
}
console.log(result)
.as-console-wrapper {max-height: 100% !important;top: 0;}
添加回答
舉報(bào)