如何使用Lo-Dash连接数组

时间:2014-03-08 00:30:42

标签: javascript functional-programming lodash

因为我正在尝试Lo-Dash,我想知道如何加入和排序两个数组?

A1: [ 3, 1 ]

A2: [ { 1: ‘val 1’ }, { 2: ‘val 2’ }, { 3: ‘val 3’ }, { 4: ‘val 4’ }, … ]

A1 join A2 orderBy Vals: [ { 1: ‘val 1’ }, { 3: ‘val 3’ }]

使用_.sortBy排序似乎很简单。但是如何进行联接呢?

1 个答案:

答案 0 :(得分:2)

我将不得不做出一些假设来回答你的问题。首先,与评论中的路易mentioned一样,A2不是有效的Javascript。让我们看看路易斯建议的内容,而是使用格式[{ 1: 'val 1' }, ...]。其次,A2中的对象是否保证只有一个密钥,或者我们是否需要搜索这些密钥?为简单起见,我将假设前者。

鉴于这些假设,以下内容可行:

_.filter(A2, function(d) {
  return _.contains(A1, _.parseInt(_.keys(d)[0]));
});

与大多数Lo-dash的函数不同,这里使用的函数不会从普通的'Javascript'中执行过多的抽象。给定支持ECMAScript 5的浏览器,您可以使用以下内容替换Lodash包装器以获得相同的功能:

A2.filter(function(d) {
  return A1.indexOf(parseInt(Object.keys(d)[0])) !== -1;
});