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

标签 javascript object underscore.js

我有两个数组,我想将它们合并为一个对象。我已经给出了一些我所拥有的和我想要实现的目标的例子。我尝试了 _.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'
  }
];

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

最佳答案

非下划线解决方案,即.map() s 新数组,如果可以的话,从原始数组返回对象 .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)

关于javascript - 如何按照包含每个对象中存在的属性的唯一值的另一个数组的顺序对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268702/

相关文章:

javascript - 如何使用 Javascript 更改 PHP 变量的值?

javascript - 如何从 JQuery 函数内将值推送到数组

arrays - 如果属性值存在于另一个对象数组中,则快速过滤对象数组

javascript - 如何遍历 JavaScript 对象?

javascript - 如何按子值将对象数组拆分为多个对象数组

javascript - 使用 .map() 在 jquery 中分组

javascript - 如何处理大数据集的 HighCharts 缩放

javascript - 在 javascript 中循环数组 - 按顺序

javascript - ANGULARJS 用空数组填充数组对象

javascript - Underscore JS 数组和带对象的数组的区别