Как я могу перетасовать собственность в объекте на основе условия - PullRequest
0 голосов
/ 20 февраля 2019

JSBin: https://jsbin.com/kuwivohixu/edit?html,js,output

var v = {
    checkit: {
    'company_dummy': {
        count: 0
    },
    'company_2': {
      count: 1
    },
    'company_3': {
      count: 1
    },
    'company_4': {
      count: 6
    },
    'company_5': {
      count: 6
    }
  }
}

var newest_company = "company_5";
var company_sorted = [];
for (var each_company in v['checkit']) { //for each company in 'v'
  company_sorted.push([each_company, v['checkit'][each_company]]); //save the company and the company object in affinity
}

company_sorted.sort(function(a, b) {
  return b[1]['count'] - a[1]['count'];
});

/*
company_sorted.sort(function(a,b) {
  //How can I update my object that if the `newest_company` has a count
    that is tied with another company as the higest `count` then move 
    that to be the first in the group after being sorted from high to low

})
*/

console.log('company_dummy' in v['checkit']);
console.log(company_sorted);

Как я могу обновить свой объект, чтобы, если у newest_company был счет, связанный с другой компанией как самый высокий count, то переместите его напервый в группе после сортировки от высокой к низкой

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

использовать Object.keys примерно так:

let companies = []
Object.keys(v.checkit).forEach(c => {
   if (c !== newest_company)
      companies.push({name: c, count: v.checkit[c].count})
})
companies.sort((a, b) => { return b.count - a.count})
for (let i = 0; i < companies.length; i++) {
   if (v.checkit[newest_company].count >= companies[i].count) {
      companies.splice(i, 0, {name: newest_company, count: v.checkit[newest_company].count})
      break;
   }
}
if (!companies.length) companies.push(v.checkit[newest_company])
v.checkit = companies

Примечание: это решение преобразует вашу проверку правильности в массив

0 голосов
/ 20 февраля 2019

Вы можете сравнить компанию с нужной вам компанией, если количество равно:

/* v (bad name) and newest exist */
const companies = Object.entries(v.checkit);

companies.sort(([nameA, objA], [nameB, objB]) => 
 objB.count - objA.count ||
 (nameA === newest_company) - (nameB === newest_company)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...