首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在object days中查找共性

在object days中查找共性
EN

Stack Overflow用户
提问于 2020-09-23 12:42:49
回答 1查看 39关注 0票数 0

我有一个对象数组,我想找出它们之间最常见的连续日期,然后选择该连续日期对中的第一天。

代码语言:javascript
复制
let data = [
   {
     name: "mike",
     city: "Los Angeles",
     days: ["2020-01-02", "2020-01-03","2020-01-18", "2020-01-19"]
   },

   {
     name: "Kenny",
     city: "Chicago",
     days: ["2020-04-02", "2020-04-12","2020-04-19"]

   },
 
   {
     name: "James",
     city: "Los Angeles",
     days: ["2020-05-02", "2020-05-12","2020-05-19"]
   },
    {
     name: "Maggie",
     city: "Los Angeles",
     days: ["2020-11-12", "2020-11-13","2020-05-19"]
   },
   {
     name: "Ricardo",
     city: "Los Angeles",
     days: ["2020-01-02", "2020-01-03","2020-05-19"]
   },
   {
     name: "Reeny",
     city: "Chicago",
     days: ["2020-01-02", "2020-01-04","2020-05-09"]
   },

];

例如,对于洛杉矶,我想返回:

代码语言:javascript
复制
{
   city: "Los Angeles", 
   day: "2020-01-02",
   people: ["mike", "ricardo"],
}

"Maggie“不会出现,因为她连续可用的天数比Mike和James少。

对于迈克和詹姆斯来说,"2020-01-02""2020-01-03"出现在洛杉矶最多。

对于芝加哥,我只想返回一个空字符串,因为我没有任何连续的日期。

到目前为止,我遍历了数据并将城市推送到一个对象。如果城市已经在对象中,我将每个day推送到现有数组中。如果city不在散列对象中,那么我只需设置它并使其等于days

代码语言:javascript
复制
let obj = {};
data.forEach(x => {
   if (map[x.city]) {
       x.days.forEach(y => {
          map[x.city].push(y);
       })
   } else {
      map[x.city] = x.days;
   }
});

for (x in obj) {
    let arr = [...new Set(obj[x])]
    obj[x] = arr.sort();
}

我的结果是一个以城市为关键字的对象,值是天数(通过Set删除了重复项):

代码语言:javascript
复制
obj = {
    "Los Angeles": ["2020-01-02", "2020-01-03","2020-01-18", "2020-01-19", "2020-05-02", "2020-05-12","2020-05-19", "2020-11-12", "2020-11-13"],
    "Chicago": ["2020-01-02", "2020-01-04","2020-04-02", "2020-04-12","2020-04-19", "2020-05-09"]
    }

从这一点来看,我不确定该怎么做。我想这是可以实现的,但我不知道下一步该怎么做。

EN

回答 1

Stack Overflow用户

发布于 2020-09-23 15:37:32

您可以使用alasql https://github.com/agershun/alasql/wiki/Examples

使用alasql,你可以做: DISTINCT或GROUP等。

示例:

代码语言:javascript
复制
// Fill table with data
var person = [ 
    { name: 'bill' , sex:'M', income:50000 },
    { name: 'sara' , sex:'F', income:100000 },
    { name: 'larry' , sex:'M', income:90000 },
    { name: 'olga' , sex:'F', income:85000 },
];

// Do the query
var res = alasql("SELECT * FROM ? person WHERE sex='F' AND income > 60000", [person]);

document.getElementById("result").innerHTML = JSON.stringify(res);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64021155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档