De-dup PrefixSet code in SafeBrowsingDatabaseManager.
[chromium-blink-merge.git] / tools / deep_memory_profiler / visualizer / static / utility.js
blob12649d755eca2537dc6d53e7c76f540708bfbab5
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * This function returns the first element index that >= target, when no element
7  * in the array >= target, return array.length.
8  * This function must be called in the shape of binarySearch(array, target).
9  * @param {number} target
10  * @return {number}
11  */
12 var binarySearch = function(target) {
13   'use strict';
15   var left = 0;
16   var right = this.length - 1;
17   while (left <= right) {
18     var mid = Math.floor((left + right) / 2);
19     if (this[mid] < target)
20       left = mid + 1;
21     else if (this[mid] > target)
22       right = mid - 1;
23     else
24       return mid;
25   }
26   return left;
29 /**
30  * Return the intersection set of two sorted arrays.
31  * @param {Array.<*>} left
32  * @param {Array.<*>} right
33  * @return {Array.<*>}
34  */
35 var intersectionOfSorted = function(left, right) {
36   var from = 0;
37   return left.reduce(function(previous, current) {
38     var idx = right.indexOf(current, from);
39     if (idx != -1) {
40       previous.push(current);
41       from = idx;
42     }
43     return previous;
44   }, []);
47 /**
48  * Output object with indented format.
49  * @param  {Object} obj
50  * @param  {string} title
51  */
52 var inspect = function(obj, title) {
53   if (title) console.log(title);
54   console.log(JSON.stringify(obj, null, 2));