 user5723270 - 4 years ago 139
Javascript Question

# finding intersection of arrays to find hcf

The first function find factors of a number and works fine.

``````//first find divisors of a number

function divisors(n) {
var result = [];
for (var i = 1; i <= n; i++) {
if ((n % i) == 0) {
result.push(i);
}
}
return result;
}
//the following gives problems

function commonTerms(arr1, arr2) {
var arr1 = [];
arr2 = [];
common = [];
var m = Math.min(arr1.length, arr2.length);
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if ((arr1(i)) == (arr2(j))) {
common.push(arr1(i));
} else {
continue;
}
}
}
return common;
}

var x = parseInt(prompt("number to find divisors of?"));
document.write(divisors(x));
var y = parseInt(prompt("number to find divisors of?"));
document.write("<br>" + divisors(y));

``````<!DOCTYPE html>
<html>

<body>

<h1>GCD</h1>

<p>This is my first website
<br>finding div</p>
</body>

</html>``````

It won't return anything, the second function is the one giving me trouble. I have been looking at it for an hour. Starting to learn programming on my own. Anonymous

The problem is that you're accessing array items like this: `arr(i)`. You should do it with square brackets:

``````if ((arr1[i])==(arr2[j])){
common.push(arr1[i]);
//...
}
``````

And you don't need the round braces at all. Plus you'd better use strict comparison (`===` instead of `==`).

So it would be:

``````if (arr1[i] === arr2[j]){
common.push(arr1[i]);
//...
}
``````

BTW Consider checking this question

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download