如何使用 Lo-Dash 合并数组

7

由于我正在尝试使用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
你的 JavaScript 代码不合法。你是不是想要 [ { 1: 'val 1' }, { 2: 'val 2' },...] 这种结构?虽然这个结构很奇怪,但至少它是合法的。 - Louis
从lodash 4.x开始,_join是数组的一个支持方法,参考:https://lodash.com/docs#join - hippofluff
1个回答

2
我要做出一些假设来回答你的问题。首先,就像路易斯在评论中提到的那样,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;
});

确实,A2的键是唯一的。感谢您提供的解决方案。我不能保证使用支持ECMA5的浏览器。Lo-dash的解决方案是否也适用于非ECMA5浏览器? - CalvinDale
是的,Lo-dash 有一种备用实现,以防 Object.keys 不可用。 - Yony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接