我如何比较两者以正确排序?

时间:2019-04-26 03:22:52

标签: javascript arrays

目标是区分两个数组,然后控制台按价格范围依次记录产品数组,我尝试使用嵌套的for循环查看是否可以解决但未按正确的方向进行操作,也正在考虑使用lo dash。我如何能够比较两者之间的ID并按价格顺序推它们?

/*
 Your task is to write a function or set of functions that console logs out the products ordered by price
*/



var products = [
  { id: 1, name: 'Buzzy' },
  { id: 2, name: 'Bytrex' },
  { id: 3, name: 'CactiDance' },
  { id: 4, name: 'CactiLoops' },
  { id: 5, name: 'Cadaver Jelly' },
  { id: 6, name: 'Caffeine Serene' },
  { id: 7, name: 'Cajun Sation' },
  { id: 8, name: 'Call it Green' },
  { id: 9, name: 'Callflex' },
  { id: 10, name: 'Calling Card Shark' },
  { id: 11, name: 'Calque' },
  { id: 12, name: 'Camel Meal Tea' },
  { id: 13, name: 'Camelot Chamomile' },
  { id: 14, name: 'Campxotica' },
  { id: 15, name: 'Camus the Killer Tale' },
  { id: 16, name: 'Candecor' },
  { id: 17, name: 'Candelarium' },
  { id: 18, name: 'CandID' },
  { id: 19, name: 'Candlelight Vittles' },
  { id: 20, name: 'Candy Ask' },
  { id: 21, name: 'Candy Floss' },
];

var prices = [
  { id: 6, price: 55 },
  { id: 14, price: 22 },
  { id: 15, price: 57 },
  { id: 4, price: 41 },
  { id: 18, price: 9 },
  { id: 17, price: 3 },
  { id: 2, price: 73 },
  { id: 7, price: 43 },
  { id: 5, price: 78 },
  { id: 1, price: 91 },
  { id: 8, price: 58 },
  { id: 16, price: 69 },
  { id: 13, price: 74 },
  { id: 19, price: 14 },
  { id: 21, price: 25 },
  { id: 12, price: 84 },
  { id: 20, price: 8 },
  { id: 9, price: 94 },
  { id: 10, price: 36 },
  { id: 3, price: 34 },
  { id: 11, price: 71 },
];

2 个答案:

答案 0 :(得分:1)

您可以使用mapfindIndexmap将返回一个新数组。在map的回调函数中,使用findIndex并使用它来查找ID匹配的对象的索引。

var products = [{
    id: 1,
    name: 'Buzzy'
  },
  {
    id: 2,
    name: 'Bytrex'
  },
  {
    id: 3,
    name: 'CactiDance'
  },
  {
    id: 4,
    name: 'CactiLoops'
  },
  {
    id: 5,
    name: 'Cadaver Jelly'
  },
  {
    id: 6,
    name: 'Caffeine Serene'
  },
  {
    id: 7,
    name: 'Cajun Sation'
  },
  {
    id: 8,
    name: 'Call it Green'
  },
  {
    id: 9,
    name: 'Callflex'
  },
  {
    id: 10,
    name: 'Calling Card Shark'
  },
  {
    id: 11,
    name: 'Calque'
  },
  {
    id: 12,
    name: 'Camel Meal Tea'
  },
  {
    id: 13,
    name: 'Camelot Chamomile'
  },
  {
    id: 14,
    name: 'Campxotica'
  },
  {
    id: 15,
    name: 'Camus the Killer Tale'
  },
  {
    id: 16,
    name: 'Candecor'
  },
  {
    id: 17,
    name: 'Candelarium'
  },
  {
    id: 18,
    name: 'CandID'
  },
  {
    id: 19,
    name: 'Candlelight Vittles'
  },
  {
    id: 20,
    name: 'Candy Ask'
  },
  {
    id: 21,
    name: 'Candy Floss'
  },
];

var prices = [{
    id: 6,
    price: 55
  },
  {
    id: 14,
    price: 22
  },
  {
    id: 15,
    price: 57
  },
  {
    id: 4,
    price: 41
  },
  {
    id: 18,
    price: 9
  },
  {
    id: 17,
    price: 3
  },
  {
    id: 2,
    price: 73
  },
  {
    id: 7,
    price: 43
  },
  {
    id: 5,
    price: 78
  },
  {
    id: 1,
    price: 91
  },
  {
    id: 8,
    price: 58
  },
  {
    id: 16,
    price: 69
  },
  {
    id: 13,
    price: 74
  },
  {
    id: 19,
    price: 14
  },
  {
    id: 21,
    price: 25
  },
  {
    id: 12,
    price: 84
  },
  {
    id: 20,
    price: 8
  },
  {
    id: 9,
    price: 94
  },
  {
    id: 10,
    price: 36
  },
  {
    id: 3,
    price: 34
  },
  {
    id: 11,
    price: 71
  },
];



let newArr = prices.map(function(item) {
  let k = products.findIndex(elem => elem.id === item.id);
  if (k !== -1) {
    return products[k]
  }

});
console.log(newArr)

答案 1 :(得分:0)

您可以先sort prices个数组。然后遍历它,并使用find像这样获得每个products的{​​{1}}:

id