下面的代碼請問這個功能工作,
var diffArray = function(a, b) {
return b.filter(function(value) { return a.indexOf(value) === -1; });
};
輸入是:
diffArray([1, "3", 3, "4"], [1, "1", 3, 4]);
我不明白爲什麼它返回:["1", 4]
能否請您澄清,要我。
下面的代碼請問這個功能工作,
var diffArray = function(a, b) {
return b.filter(function(value) { return a.indexOf(value) === -1; });
};
輸入是:
diffArray([1, "3", 3, "4"], [1, "1", 3, 4]);
我不明白爲什麼它返回:["1", 4]
能否請您澄清,要我。
解釋一些事情:
Array.indexOf方法是搜索一個特定的元素的陣列,並且如果它發現它返回的元素的索引的方法。如果它沒有返回-1。
Array.filter接收回調函數。這個回調函數對於數組的每個元素都會調用一次,如果元素應該出現在過濾結果中,它應該返回true,否則返回false。例如:[1, 2, 3].filter(function(value) { return value < 3 });
將返回[1, 2]
。
所以你傳遞2個數組到diffArray。 b數組正在被過濾,並且過濾器函數在b數組的每個元素中搜索一個數組,並返回b數組中不存在的每個元素(每個元素的indexOf === -1);因此b元素是[1, "1", 3, 4]
。讓我們來看看它一步一步:
我希望這是更清晰了。
請評論downvotes,這樣我們可以提高:) –
它不返回。http://jsbin.com/yecanun/1/edit?js,console – Quentin
請添加想要的結果。 –
是什麼你期待函數返回,它實際返回什麼? – Aron