Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptでソートされた間隔の配列に新しい間隔を挿入する


この質問の目的のために、間隔を2つの数値の配列として定義します。ここで、最初の数値は常に2番目の数値よりも小さくなります。

例-

[4, 6], [2, 3], [6, 8], [2, 7], [1, 8] are all examples of valid intervals.

開始時刻(各間隔の最初の要素)に従ってソートされた間隔の配列があるとします。

配列内の間隔は重複していません。つまり、任意の2つの隣接する間隔に対して

[m, n], [x, y]
m < n < x < y

したがって、この間隔の配列のそのような例の1つは、-

です。
const arr = [[ 2, 4], [5, 7], [9, 10], [13, 17]];

最初の引数として1つの間隔の配列を取り、2番目の引数として1つの間隔を受け取るJavaScript関数を作成する必要があります。

次に、関数は配列内の正しい位置に間隔を挿入し、配列の重複しないプロパティを維持する必要があります。

必要に応じて、配列の間隔が重複しないように、配列内の2つ以上の間隔をマージできます。

たとえば、上記の間隔の配列に対して、挿入する必要のある間隔が[6、13]の場合、出力は-

のようになります。
const output = [[2, 4], [5, 17]];

以下はコードです-

const arr = [[2, 4], [5, 7], [9, 10], [13, 17]];
const interval = [6, 13];
const insertWithin = (arr = [], interval = []) => {
   const res = [];
   let ind = 0;
   while (arr[ind] && arr[ind][1] < interval[0]) {
      res.push(arr[ind]);
      ++ind;
   };
   let start = interval[0];
   let end = interval[1];
   while (arr[ind] && arr[ind][0] <= interval[1]) {
      start = Math.min(start, arr[ind][0]);
      end = Math.max(end, arr[ind][1]);
      ++ind;
   }
   res.push([start, end]);
   while (arr[ind]) {
      res.push(arr[ind]);
      ++ind;
   }
   return res;
};
console.log(insertWithin(arr, interval));

出力

以下はコンソール出力です-

[[2, 4], [5, 17]]

  1. 新しいキーワードでJavaScript配列を作成します。

    以下は、新しいキーワードを使用してJavaScript配列を作成するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style&

  2. JavaScriptオブジェクトを新しい配列にフォーマットする

    以下は、JavaScriptオブジェクトを新しい配列にフォーマットするためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style