/** * Calculate the distances by using the numbers, strings and dates. * @param {node} source * @param {node} target * @param {array} properties - the properties of the nodes. * @return {number} the distance between source and target nodes. */ function calculateManhattanDistance(source, target, properties, normArgs) { var sum = 0.0, cols = 0; // console.log(properties); // Iterate through every column of data for (var i = 0; i < properties.length; i++) { property = properties[i]; if (property.toLowerCase() !== "class" && property.toLowerCase() !== "app" && property.toLowerCase() !== "user" && property.toLowerCase() !== "weekday") { var s = source[property], t = target[property]; if (s !== t) { cols++; } if (normArgs.sig[i] !== 0) { s = (s - normArgs.avg[i]) / (2.0 * normArgs.sig[i]); t = (t - normArgs.avg[i]) / (2.0 * normArgs.sig[i]); } sum += Math.abs(s - t); } } // console.log(Math.sqrt(sumDiff)/cols); return sum * (cols / properties.length); }