如何在AngularJS中查找多维数组中的重复值

4
var arrayValues = [[2,3,5],[3,5]]
var commonArrayValues = _.intersection(arrayValues);

目前它的工作方式是,

_.intersection([[2,3,5],[3,5]])
    Result: [2,3,5] 

但它应该像这样工作,(即外部数组应该被移除)。
_.intersection([2,3,5],[3,5])
    Expected Result: [3,5]

请有好心人给我提供一个合适的解决方案。非常感谢您的帮助。

3个回答

2

您可以使用applyintersection一起使用来获得您想要的结果:

var result = _.intersection.apply(null, arrayValues);

var arrayValues = [[2,3,5],[3,5], [2,3,5,6]]

var result = _.intersection.apply(null, arrayValues);

document.getElementById('results').textContent = JSON.stringify(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore.js"></script>

<pre id="results"></pre>


0

intersection *_.intersection(arrays)
计算所有数组的交集值列表。结果中的每个值都存在于所有数组中。

_.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); => [1, 2]

var arrayValues = [[2,3,5],[3,5]]

这里的arrayValues是一个包含2个数组的数组。而_.intersection期望的是参数为数组,而不是一个包含数组的数组。

_.intersection([2,3,5],[3,5]) 

或者

_.intersection(arrayValues[0],arrayValues[1])

将输出您所需的内容。


这是我的问题。如何解析并删除那个外部数组? - Gsk
我需要动态获取arrayValues[0]和arrayValues[1]。 - Gsk

0
唯一我能想到的方法是使用 eval:
var arrayValues = [[2,3,5],[3,5]]
var evalString = '_.intersection(';

arrayValues.forEach(function (element, index){
  evalString += 'arrayValues['+index+'],';
});

evalString =evalString.slice(0, -1);
evalString += ');'
eval(evalString);

evalString 最终会变成类似于 _.intersection(arrayValues[0],arrayValues[1],...,arrayValues[n]);


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