我的功能需要接受任意数量的列表,然后输出它们的对称差异。 sym([1, 2, 3], [5, 2, 1, 4])
应返回[3, 5, 4]
和sym([1, 2, 5], [2, 3, 5], [3, 4, 5]) should return [1, 4, 5]
。我很困惑我的代码的结果 - 这返回一个空的数组。javascript查找对称差异
function isin(num,arra)
{
for (var i=0; i<arra.length; i++)
{
if (num == arra[i])
{
return true;
}
}
return false;
}
function sym()
{
console.log("logging args");
console.log(arguments); // logs [Array[3], Array[4]]
var syms = [];
for (var i=0; i<arguments.length-1; i++)
{
var ins = false;
for (var j=0; j<arguments[i].length; j++)
{
for (var k=i+1; k < arguments.length; k++)
{
if(isin(arguments[i][j], arguments[k]))
{
ins = true;
}
}
}
if (ins === false)
{
syms.push(arguments[i][j]);
}
}
return syms;
}
sym([1, 2, 3], [5, 2, 1, 4]);
有了更新的问题,是你仍然收到'未定义的错误? –
不,但我的代码返回一个空数组 – kilojoules
谢谢大家的帮助。最后要说明的是,这段代码并不包含所有列表在一组> 2列表中具有相同元素的情况。 – kilojoules