通过JavaScript正确解释JSON数组

通过JavaScript正确解释JSON数组,javascript,arrays,json,Javascript,Arrays,Json,目前能够通过“团队”进行筛选,并说它是否匹配x,然后显示与之相关的所有内容。问题是通过硬代码搜索团队类别名称的方法,但需要它能够以编程方式为每个唯一的团队类型排序 正如您在下面所看到的,我的解决方案需要三个语句,而它只能包含在一个面向对象的方法中 $('#jobs-container .jobs-list').append( '<div id="teamtop"><span>Legal</span></div>'); for (i = 0;

目前能够通过“团队”进行筛选,并说它是否匹配x,然后显示与之相关的所有内容。问题是通过硬代码搜索团队类别名称的方法,但需要它能够以编程方式为每个唯一的团队类型排序

正如您在下面所看到的,我的解决方案需要三个语句,而它只能包含在一个面向对象的方法中

$('#jobs-container .jobs-list').append(
  '<div id="teamtop"><span>Legal</span></div>');

for (i = 0; i < _data.length; i++) {
  for (j = 0; j < _data[i].postings.length; j++) {
    var posting = _data[i].postings[j]
    var title = posting.text
    var description = posting.description
    //Making each job description shorter than 250 characters
    var shortDescription = $.trim(description).substring(0, 250)
      .replace('\n', ' ') + "...";
    var location = nullCheck(posting.categories.location);
    var locationCleanString = cleanString(location);
    var commitment = nullCheck(posting.categories.commitment);
    var commitmentCleanString = cleanString(commitment);
    var team = nullCheck(posting.categories.team);
    var teamCleanString = cleanString(team);
    var link = posting.hostedUrl + leverParameter;

    if (team == "Legal") {
      $('#jobs-container .jobs-list').append(
        '<div class="job ' + teamCleanString + ' ' + locationCleanString + ' ' + commitmentCleanString + '">' +
        '<a class="job-title" href="' + link + '"">' + title + '</a>' +
        '</div>'
      );
    }
  }
}

$('#jobs-container .jobs-list').append(
  '<div id="teamtop"><span>Engineering</span></div>');

for (i = 0; i < _data.length; i++) {
  for (j = 0; j < _data[i].postings.length; j++) {
    var posting = _data[i].postings[j]
    var title = posting.text
    var description = posting.description
    //Making each job description shorter than 250 characters
    var shortDescription = $.trim(description).substring(0, 250)
      .replace('\n', ' ') + "...";
    var location = nullCheck(posting.categories.location);
    var locationCleanString = cleanString(location);
    var commitment = nullCheck(posting.categories.commitment);
    var commitmentCleanString = cleanString(commitment);
    var team = nullCheck(posting.categories.team);
    var teamCleanString = cleanString(team);
    var link = posting.hostedUrl + leverParameter;

    if (team == "Engineering") {
      $('#jobs-container .jobs-list').append(
        '<div class="job ' + teamCleanString + ' ' + locationCleanString + ' ' + commitmentCleanString + '">' +
        '<a class="job-title" href="' + link + '"">' + title + '</a>' +
        '</div>'
      );
    }
  }
}

$('#jobs-container .jobs-list').append(
  '<div id="teamtop"><span>Operations</span></div>');

for (i = 0; i < _data.length; i++) {
  for (j = 0; j < _data[i].postings.length; j++) {
    var posting = _data[i].postings[j]
    var title = posting.text
    var description = posting.description
    //Making each job description shorter than 250 characters
    var shortDescription = $.trim(description).substring(0, 250)
      .replace('\n', ' ') + "...";
    var location = nullCheck(posting.categories.location);
    var locationCleanString = cleanString(location);
    var commitment = nullCheck(posting.categories.commitment);
    var commitmentCleanString = cleanString(commitment);
    var team = nullCheck(posting.categories.team);
    var teamCleanString = cleanString(team);
    var link = posting.hostedUrl + leverParameter;

    if (team == "Operations") {
      $('#jobs-container .jobs-list').append(
        '<div class="job ' + teamCleanString + ' ' + locationCleanString + ' ' + commitmentCleanString + '">' +
        '<a class="job-title" href="' + link + '"">' + title + '</a>' +
        '</div>'
      );
    }
  }
}
但我们正在手动匹配到legal,只想通过每个团队进行筛选并查看

Vngeener回答每次重复团队,只需将团队打印一次。

  • 您实际上不需要手动创建“Teamtop”div
  • 您创建的for循环应该能够处理这个问题
  • 对于每个团队标题,您不需要重复的for循环代码
  • 循环中不需要“团队”条件
代码的编写方式没有正确地利用for循环功能

尝试用下面给出的代码替换您的代码(仅一次,在多种情况下不要重复此代码):

var teamAdded=[];
对于(i=0;i<\u data.length;i++){
对于(j=0;j<_数据[i].postings.length;j++){
var过账=_数据[i]。过账[j]
var title=posting.text
var description=posting.description
//使每个职位描述少于250个字符
var shortDescription=$.trim(description).substring(0250)
.替换('\n','')+“…”;
变量位置=空检查(过帐.类别.位置);
var locationCleanString=cleanString(位置);
var承诺=空支票(过账.类别.承诺);
var commitmentCleanString=cleanString(承诺);
var team=nullCheck(posting.categories.team);
var teamCleanString=cleanString(团队);
var link=posting.hostedUrl+leverParameter;
//动态添加团队顶部标题
如果(!teamAdded[团队]){
$('#jobs container.jobs list')。追加(
''+团队+'';
teamAdded[team]=true;
}
//这里不需要团队条件
//如果(团队==“法律”){
$(“[data team=“”+team+“]”)。追加(
'' +
'' +        
''      
);
}
}

也许你应该先将数据过滤到合适的职业类别集合中,然后再装配一些复杂的条件。这真的没有什么帮助。我没有确切的解决方案,但有一个代码增强建议。要使代码运行更快,占用更少的内存,请在循环外声明变量,然后在循环中分配值.V8引擎将非常感谢。每次重复团队,只需将团队打印一次。是否有方法将团队名称放入循环中,然后仅在更新逻辑后应用它们,只添加一次团队标题,并为每个团队子链接添加一个新容器。优秀的vgner
for(i = 0; i < team.length; i++) {
  alert ("output only teams once"+team);
}
Legal
Corporate Associate
Corporate Paralegal
Junior Corporate Associate, Blockchain
Junior Corporate Associate, Emerging Growth
Legal Document Specialist
Regulatory & Compliance Counsel
var teamAdded = [];
for(i = 0; i < _data.length; i++) {
    for (j = 0; j < _data[i].postings.length; j ++) {
        var posting = _data[i].postings[j] 
        var title = posting.text
        var description = posting.description  
        //Making each job description shorter than 250 characters
        var shortDescription = $.trim(description).substring(0, 250)
        .replace('\n', ' ') + "...";
        var location = nullCheck(posting.categories.location);
        var locationCleanString = cleanString(location);
        var commitment = nullCheck(posting.categories.commitment);
        var commitmentCleanString = cleanString(commitment);
        var team = nullCheck(posting.categories.team);
        var teamCleanString = cleanString(team);
        var link = posting.hostedUrl+leverParameter;

        //Add Team top heading dynamically
        if (!teamAdded[team]){
            $('#jobs-container .jobs-list').append(
            '<div id="teamtop"><span>'+ team +'</span></div><div id="team-children"  data-team="'+ team +'"></div>');
            teamAdded[team] = true;
        }
        // team condition was not required here
        // if(team=="Legal"){

        $('[data-team="'+ team +'"]').append(
        '<div class="job '+teamCleanString+' '+locationCleanString+' '+commitmentCleanString+'">' +
        '<a class="job-title" href="'+link+'"">'+title+'</a>' +        
        '</div>'      
        );
    }
}