【问题标题】:Check object has the key and value检查对象有键和值
【发布时间】:2018-03-12 12:57:32
【问题描述】:

课程对象:

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'}]

我的预期结果:

finalObjCategoriesobject:

 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});
  //}
}

【问题讨论】:

  • 不清楚你在这里问什么,而且你显示的对象文字无效,它们都有重复的键名。
  • 你的问题不清楚,据我了解这可以帮助你stackoverflow.com/questions/135448/…
  • @Keith 我已经更新了问题,请您检查一次。

标签: javascript arrays json object filter


【解决方案1】:

你的问题真的很不清楚,但如果我理解了,你可以使用.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.

【讨论】:

  • 你不太了解我想要相反的result。只有那些`类别`应该进入`结果`哪些类别在courses对象中有数据。
  • 你能用想要的结果更新你的问题吗?
猜你喜欢
  • 2017-01-28
  • 2022-01-24
  • 1970-01-01
  • 2014-06-29
  • 2021-12-10
  • 2019-09-21
  • 2021-09-05
  • 1970-01-01
  • 2019-03-31
相关资源
最近更新 更多