例如,我有:
阵列(2
,1
,3
,4
,5
,6
,7
)
和我已经知道(2
,1
,3
)
如果我知道从4
到{{1}的所有号码都存在,我应该如何获得5
,6
,7
,1
)和我已经知道
所以我想要一个包含我还不知道的数字的数组。
对不起,如果听起来很愚蠢:|
答案 0 :(得分:0)
如果A = (2, 1, 3)
且B = (1, 2, 3, 4, 5, 6, 7)
那么你想要不常见的元素(即,两者中都不存在的元素)吗?你可以试试这个:
//note: could be improved - wrote it quickly
function uncommon(a, b) {
var map = {};
var alreadyAdded = {};
var uncommonElements = [];
var arrays = (a.length > b.length) ?
{first: b, second: a} :
{first: a, second: b};
for(var i = 0; i < arrays.first.length; i++) {
map[arrays.first[i]] = true;
}
for(var i = 0; i < arrays.second.length; i++) {
if(!map[arrays.second[i]]) {
uncommonElements.push(arrays.second[i]);
alreadyAdded[arrays.second[i]] = true;
}
}
for(var i = 0; i < arrays.first.length; i++) {
if(!map[arrays.second[i]] && !alreadyAdded[arrays.first[i]]) {
uncommonElements.push(arrays.first[i]);
}
}
return uncommonElements;
}
另请注意,如果您有:
A = (2, 1, 3, 9)
而B = (1, 2, 3, 4, 5, 6, 7)
,您会得到(2, 1, 3, 9)
,即其中任何一个都找不到元素。