代码之家  ›  专栏  ›  技术社区  ›  Mr world wide

检查对象是否具有键和值

  •  0
  • Mr world wide  · 技术社区  · 8 年前

    课程对象:

    data.courses: [{name: 'JAVA', categoryid: '1'},
    {name: 'PHP', categoryid: '1'},
    {name: 'HR', categoryid: '2'}]
    

    类别对象:

    data.categories: [{catname: 'Information technology',categoryid: '1'},
    {catname: 'HR',categoryid: '2'},
    {catname: 'Sales',categoryid: '3'}]
    

    我的预期结果:

    FinalobjCategories对象:

     data.finalObjCategories: [{catname: 'Information technology',categoryid: '1'},
     {catname: 'HR',categoryid: '2'}] 
    

    // {catname: 'Sales',categoryid: '3'} 已删除,因为课程对象中不存在具有此类别的课程。

    我只想获取那些类别的记录,这些类别有课程数据。我该怎么做。?

    while(grCategory.next())  {
      var categoryName=grCategory.getValue('name');
      var categoryId=grCategory.getUniqueValue();
      //here condition needed(couse cat lenght > 1 push else dontpush)
      //if (data.courses.hasOwnProperty('name');){
          data.categories.push({name: categoryName, id: categoryId});
      //}
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Boky    8 年前

    你的问题真的很不清楚,但如果我理解了,你可以用 .map .find 得到你想要的。

    var courses =  [
      {name: 'JAVA',categoryid: '1'},
      {name: 'PHP',categoryid: '1'},
      {name: 'HR',categoryid: '2'}
    ]
                    
    var categories = [
      {catname: 'Information technology',categoryid: '1'},
      {catname: 'HR',categoryid: '2'},
      {catname: 'Sales',categoryid: '3'}
    ]
    
    var result = [];
    courses.map(function(course){
      var crs = categories.find(function(cat){return course.categoryid == cat.categoryid})
    
      if(typeof crs !== "undefined" && result.indexOf(crs) < 0){
        result.push(crs);
      }    
    })
    
    console.log(result)

    Here is the fiddle.