大家好,请帮我从两个带功能的数组中获取相同的数字。
function getIntersect(arrF, arrS){
var arrF = [ 3, 5, 8];
var arrS = [1, 2, 3, 5, 8];
var nums = [];
for ( var i = 0; i < arrF.length; i++ ){
for ( var j = 0; j < arrS.length; j++ ){
if ( i == j ){
nums.push(i);
nums.push(j);
return nums;
}
}
}
}
document.write(getIntersect());
答案 0 :(得分:1)
您可以使用数组includes()
来实现,以检查第一个数组(arrF
)中的元素是否存在于第二个数组(arrS
)中。
由于您正在编写函数(getIntersect()
),因此可以在函数外部声明输入数组,并在调用函数时传递它们。通过这种方式,您可以将该函数重用于任何其他输入集。
var arrF = [ 3, 5, 8];
var arrS = [1, 2, 3, 5, 8];
function getIntersect(arrF, arrS){
var nums = [];
for ( var i = 0; i < arrF.length; i++ ){
if ( arrS.includes(arrF[i]) ){
nums.push(arrF[i]);
}
}
return nums;
}
console.log(getIntersect());
答案 1 :(得分:1)
您可以使用Document
来获得更简单的代码。
filter
&#13;
答案 2 :(得分:1)
以下是更新的代码,一些更新:
for
循环
var arrF = [3, 5, 8];
var arrS = [1, 2, 3, 5, 8];
var nums = [];
function getIntersect(arrF, arrS){
for ( var i = 0; i < arrF.length; i++ ){
for ( var j = 0; j < arrS.length; j++ ){
if ( arrF[i] == arrS[j] ){
nums.push(arrF[i]);
}
}
}
return nums;
}
document.write(getIntersect(arrF, arrS));
&#13;
答案 3 :(得分:0)
只需使用JavaScript中Array Objects上的reduce
函数,即可达到预期的效果。
function getIntersect(arrF, arrS){
return arrF.reduce((p, c) => {
if(arrS.indexOf(c) !== -1) {
p.push(c);
}
return p;
}, [])
}
//invoke helper function
getIntersect([3,5,8], [1, 2, 3, 5, 8])
//output
// [3, 5, 8]
答案 4 :(得分:0)
您可以使用散列表的帮助,将值作为键,并将object的此属性设置为true
。
{ 3: true, 5: true, 8: true }
这是针对第一个数组和第二个数组完成的,检查属性是否已设置,然后将值作为结果。
function getIntersect(a, b) {
var hash = {},
i,
result = [];
for (i = 0; i < a.length; i++) {
hash[a[i]] = true;
}
for (i = 0; i < b.length; i++) {
if (hash[b[i]]) {
result.push(b[i]);
}
}
return result;
}
console.log(getIntersect([3, 5, 8], [1, 2, 3, 5, 8]));
&#13;
使用Set
的较短方法,并使用集合过滤第二个数组。
function getIntersect(a, b) {
var setA = new Set(a);
return b.filter(v => setA.has(v));
}
console.log(getIntersect([3, 5, 8], [1, 2, 3, 5, 8]));
&#13;
答案 5 :(得分:0)
使用数组过滤功能。
var arr1 = [1,2,3,4,5,6,7];
var arr2 = [5,6,7];
var arr3 = arr1.filter(function(item) { return arr2.indexOf(item) !== -1; });
console.log(arr3);
答案 6 :(得分:0)
我认为这比大多数答案都容易得多:
const getIntersect = (a1, a2) => a1.filter(val => a2.includes(val))
console.log(getIntersect([3, 5, 8, 12], [1, 2, 3, 5, 8]))
&#13;
答案 7 :(得分:-1)
function getIntersect(arrF, arrS){
var arrF = [ 3, 5, 8];
var arrS = [1, 2, 3, 5, 8];
var nums = [];
for ( var i = 0; i < arrF.length; i++ ){
for ( var j = 0; j < arrS.length; j++ ){
if ( arrF[i] == arrS[j] ){
nums.push(arrF[i]);
}
}
}
return nums
}
document.write(getIntersect());