假设AJAX调用成功返回2个数组。返回的数组每次都不同,但可能有一些共同的元素。例如,
String result = "";
for (int i = 0; i < wordPositions.length; i++){
result += singleWords[wordPositions[i]];
}
现在我想得到数组1的每个元素出现在数组2中的次数,在这种情况下,结果将是:
define mb1= ADD_MONTHS(TRUNC(SYSDATE,'MM'), -1);
我有以下代码比较两个数组,但我无法弄清楚如何保留计数器,我是否必须为array1的每个元素构建一个新的2d数组?在这种情况下,如何在不知道其内部元素的情况下构造数组?
array1 = [a, b, c, d]
array2 = [a, b, b, b, a, c, b, c, c]
答案 0 :(得分:1)
var array1 = ['a', 'b', 'c', 'd'];
var array2 = ['a', 'b', 'b', 'b', 'a', 'c', 'b', 'c', 'c'];
var result = {}
array1.forEach(function(item) {
result[item] = 0
})
array2.forEach(function(item) {
if(result.hasOwnProperty(item)) {
result[item]++
}
})
console.log(result);
&#13;
答案 1 :(得分:0)
要实现此目的,您只需要遍历array1
以获取唯一值,然后您可以使用filter()
查找第二个数组中存在多少个值。试试这个:
var array1 = ['a', 'b', 'c', 'd'];
var array2 = ['a', 'b', 'b', 'b', 'a', 'c', 'b', 'c', 'c'];
var result = {};
array1.forEach(function(item) {
result[item] = array2.filter(t => t == item).length;
})
console.log(result);
答案 2 :(得分:0)
您可以在O(n);
中执行以下操作
var arr1 = ["a", "b", "c", "d"],
arr2 = ["a", "b", "b", "b", "a", "c", "b", "c", "c"],
result = arr2.reduce((h,p) => (h.hasOwnProperty(p) && h[p]++, h) ,arr1.reduce((m,k) => (m[k] = 0,m),{}));
console.log(result);
&#13;