Javascript 数组的差异,结果为1或未定义
Javascript 数组的差异,结果为1或未定义,javascript,arrays,node.js,difference,Javascript,Arrays,Node.js,Difference,数组a=[1,2,3,4,5,5] 数组b=[1,2,3,5] c=a-b 它应该返回c=[4](5重复了两次,但我不希望它出现在输出中) 下面是我的代码: function arrayDiff(a, b) { var array = []; var diff = []; for (var i = 0; i<a.length; i++) { array[a[i]] = true; } for (var i = 0; i<b.length; i++) {
数组a=[1,2,3,4,5,5]
数组b=[1,2,3,5]
c=a-b
它应该返回c=[4]
(5重复了两次,但我不希望它出现在输出中)
下面是我的代码:
function arrayDiff(a, b) {
var array = [];
var diff = [];
for (var i = 0; i<a.length; i++) {
array[a[i]] = true;
}
for (var i = 0; i<b.length; i++) {
if (array[b[i]]) {
delete array[b[i]];
}
else {
array[b[i]] = true;
}
for (var k in array) {
return diff.push(k);
}
}
}
Test.describe("Sample tests", function() {
Test.it("Should pass Sample tests", function() {
Test.assertDeepEquals(arrayDiff([], [4,5]), [], "a was [], b was [4,5]");
Test.assertDeepEquals(arrayDiff([3,4], [3]), [4], "a was [3,4], b was [3]");
Test.assertDeepEquals(arrayDiff([1,8,2], []), [1,8,2], "a was [1,8,2], b was []");
});
});
你能帮我修一下吗?你的代码看起来不错。它可能需要一些修改来简化
function arrayDiff(a, b) {
return a.filter((aItem) => b.indexOf(aItem) === -1);
}
您可以选择一个过滤器并过滤阵列
函数arrayDiff(a,b){
const-setB=新集合(b);
返回a.filter(v=>!setB.has(v));
}
log(arrayDiff([1,2,3,4,5,5],[1,2,3,5])代码>您的代码中有几个问题
嵌套在第二个for循环内的第三个for循环不应嵌套在第二个循环内
.push()
方法在数组中添加一个新项,并在添加新项后返回数组的长度。您需要返回diff
array,而不是返回push函数的返回值
这是固定密码
const a=[1,2,3,4,5,5];
常数b=[1,2,3,5];
函数arrayDiff(a,b){
var数组=[];
var-diff=[];
对于(var i=0;iCan u请解释它是如何工作的?我不熟悉=>(params)=>exp
表示函数(params){return exp;}
。它被称为arrow函数filter
数组函数,它以一个函数作为参数。参数函数必须返回true
或false
。因此filter
函数返回符合条件的新数组。好的,我明白了。它看起来像巴贝尔,我使用过一点,但我没有使用过它的经验。比当我尝试你的代码时,也出现了一些错误:``a是[],b是[4,5]-预期的:[],而不是得到的:['4',5']a是[3,4],b是[3]-预期的:[4],而不是得到的:['4']a是[1,8,2],b是[]-预期的:[1,8,2],而不是得到的:['1',2',8']```更改diff.push(k);
为diff.push(Number(k));
尝试a=[]
,``b=[1,2]。它返回[1,2]。如果我们在else语句中将array[b[i]
更改为array[a[i]
,它将返回[NaN
。还可以尝试wirha=[1,8,2]
我不知道你想说什么。当a=[]
和b=[1.2]
时,它还应该返回什么?它应该返回c=a-b
所以[]-[1,2]
应该返回[],而[1,8,2]-[/code>应该返回[1,8,2]
它可以工作,但我需要使用类似于我上面创建的代码的函数来运行它
function arrayDiff(a, b) {
return a.filter((aItem) => b.indexOf(aItem) === -1);
}