繁体   English   中英

如何按照包含每个对象中存在的属性的唯一值的另一个数组的顺序对对象数组进行排序?

[英]How to sort an array of objects in the order of another array containing the unique values of a property present in each object?

我有两个数组,我想将它们合并为一个对象。 我已经举例说明了我所拥有和想要实现的目标。 我尝试了_.union和其他一些下划线方法。

var original = [
  {
    Country: 'US',
    value: '10'
  },
  {
    Country: 'Turkey',
    value: '5'
  }
];

var newlist =["Afghanistan", "Antarctica","Turkey"]

我想要的结果:

var results= [
  {
    Country: 'Afghanistan',
    value: '0'
  },
  {
    Country: 'Antarctica',
    value: '0'
  },
  {
    Country: 'Turkey',
    value: '5'
  }
];

美国将不会出现在最终结果中,因为新名单中没有美国。 因此,基本上新列表中的所有值都会与原始列表中的值一起出现在结果中。

一个非下划线的解决方案, .map()是新数组,如果可以的话,从原始数组中返回该对象,如果它可以对.find()返回,否则返回新对象:

 var original = [ { Country: 'US', value: '10' }, { Country: 'Turkey', value: '5' } ]; var newlist =["Afghanistan", "Antarctica","Turkey"] var result = newlist.map(function(v) { return original.find(function(o) { return o.Country === v }) || { Country: v, value: '0' } }) console.log(result) 

它是具有ES6箭头功能的单线:

 var original = [ { Country: 'US', value: '10' }, { Country: 'Turkey', value: '5' } ]; var newlist =["Afghanistan", "Antarctica","Turkey"] var result = newlist.map(v => original.find(o => o.Country===v) || {Country:v, value:'0'}) console.log(result) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM