簡體   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