[“闪长岩”、“安山岩”、“草”、“泥土”、“粉红羊毛”、“死灌木”]
,
[“闪长岩”、“安山岩”、“草”、“泥土”、“死灌木”]
应返回[“粉红色羊毛”]
。
因为“第一个数组即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"]);
这个解法有一个线性的方法,有一个计数的对象。
var array1 = ["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"],
array2 = ["diorite", "andesite", "grass", "dirt", "dead shrub"];
function symmetricDifference(setA, setB) {
var o = {}, result = [];
function count(i, o) {
return function (a) {
o[a] = o[a] || { count: 0, value: a };
o[a].count += i;
};
}
setA.forEach(count(1, o));
setB.forEach(count(-1, o));
Object.keys(o).forEach(function (k) {
if (o[k].count) {
o[k].count = Math.abs(o[k].count);
while (o[k].count--) {
result.push(o[k].value);
}
}
});
return result;
}
document.write('<pre>' + JSON.stringify(symmetricDifference(array1, array2), 0, 4) + '</pre>');
我怎样才能比较这两个数组,以一种我想返回另一个数组的方式,它包含B中的所有a的值? 返回数组: 来自答案的C#代码:
我有两个数组: 我需要编写一个方法,该方法返回array1中元素的数组,该数组在字符串项中包含array2中的任何项。因此该方法应该返回: 我尝试了,但它只返回array1。我该怎么办?
问题内容: 我有这个间隔,当前每5秒执行一次ajax请求。我对声明有疑问。我的代码总是输入它,并且两个json值完全相同,为什么它认为它们不同? 编辑 这是控制台输出(虚线是分隔请求,它不在实际输出中) 问题答案: 不能保证以相同的方式序列化JSON对象,也不能保证属性以相同的顺序进行序列化,使用并不是测试对象相等性的好方法。 一个更好的例子是这样的函数(前一段时间在互联网上找到,希望我能感谢原始
我有一个简单的javascript问题,我真的需要一些帮助!我正在尝试弄清楚如何在数组之间比较元素,以及在下一个循环中再次比较较大的元素。假设我们有数组A和数组B。 我的问题是,在比较索引处的元素之后,我希望在下一个循环周期中比较较大的元素。 如果A=[5,7,4],B=[2,8,5] 在第一个循环中,5与2进行比较,2较小,因此会发生一些事情。在下一个循环周期中,我希望5与8进行比较,而对于现在
我很好奇如何比较这些数组,请记住这是一个示例,它不限于 4 个数组,因为这可能或多或少取决于用户选择) 最终目标是根据上述所有数组的比较/验证,获得一个具有真值或假值的新数组,仅当所有 4 个数组在该索引位置都有一个真值时,才应设置一个真值,如果它们是否为假值,例如: 希望我解释得正确。
问题内容: 这主要是一个性能问题。我有一个字符串数组AllUids中现有的所有用户的主列表。我还列出了String数组EndUids中存在的所有已过期用户。 我正在使用Java进行工作,我的目标是从主列表AllUids中删除截止日期数组中存在的所有用户。我知道PHP有一个叫做array_diff的函数。 我很好奇Java是否具有可以比较两个数组并删除两个相似的元素的东西。我的目标是这里的性能,这就