【发布时间】:2016-04-22 15:02:41
【问题描述】:
["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"],
["diorite", "andesite", "grass", "dirt", "dead shrub"]
应该返回
["pink wool"]。
因为“粉色羊毛不存在于第一个数组中,即 arr1。但它返回一个空数组。此代码仅适用于数字数组。但当数组仅包含字符串或带有数字的字符串时,代码不起作用。
function diff(arr1, arr2) {
var newArray = arr2.concat(arr1); //first joininng both arrays inn one and storing it in newArray
var newestArray = [];
for (var i=0 ; i<newArray.length ; i++) { //NOW COMPARING EACH ELEMENT OF newArray WITH ARR1 AD ARR2 AND PUSHING NOT SAME VALUES TO newestArray
if (arr1.indexOf(newArray[i]) == -1) {
newestArray.push(newArray[i]);
if (arr2.indexOf(newArray[i]) == -1) {
newestArray.push(newArray[i]);
}
}
}
return newestArray.filter(Boolean); //It is returning an empty arrray but it should return "pink wool"
}
diff(["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]);
【问题讨论】:
-
它对我来说很好。
-
你可以参考这个链接。这可能会对您有所帮助。 http://stackoverflow.com/questions/1187518/javascript-array-difference
-
缩进/格式化你的代码。
-
@HamletHakobyan 是的,它会起作用我在下一个 if 语句之后放置大括号的错误。注意到了吗?没有人在这里阅读代码来找出如此愚蠢的错误,他们只是给出了自己的解决方案。
标签: javascript arrays filter string-comparison indexof