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

配列を並べ替えて、配列の最初に特定のアイテムを含める-JavaScript


このようなオブジェクトの配列があるとします-

const arr = [
   {flag: true, other: 1},
   {flag: true, other: 2},
   {flag: false, other: 3},
   {flag: true, other: 4},
   {flag: true, other: 5},
   {flag: true, other: 6},
   {flag: false, other: 7}
];

このような配列を1つ取り込んで、次の条件に基づいて並べ替えるJavaScript関数を作成する必要があります-

  • arr.flag ===falseの場合、一致する要素は配列の最初に配置されますが、前の一致する要素の後にのみ配置されます。
  • 一致しない要素は、元の順序と同じままです。
  • 出現順序は重要です。

したがって、上記の配列の場合、出力は-

になります。
const output = [
   {flag: false, other: 3},
   {flag: false, other: 7},
   {flag: true, other: 1},
   {flag: true, other: 2},
   {flag: true, other: 4},
   {flag: true, other: 5},
   {flag: true, other: 6}
];

以下はコードです-

const arr = [
   {flag: true, other: 1},
   {flag: true, other: 2},
   {flag: false, other: 3},
   {flag: true, other: 4},
   {flag: true, other: 5},
   {flag: true, other: 6},
   {flag: false, other: 7}
];
const sortByFlag = arr => {
   const sorter = (a, b) => {
      if(!a['flag'] && b['flag']){
         return -1;
      };
      if(a['flag'] && !b['flag']){
         return 1;
      }
      return a['other'] - b['other'];
   }
   arr.sort(sorter);
};
sortByFlag(arr);
console.log(arr);

出力

これにより、コンソールに次の出力が生成されます-

[
   { flag: false, other: 3 },
   { flag: false, other: 7 },
   { flag: true, other: 1 },
   { flag: true, other: 2 },
   { flag: true, other: 4 },
   { flag: true, other: 5 },
   { flag: true, other: 6 }
]

  1. JavaScriptで配列の最初のn個の値を取得するにはどうすればよいですか?

    配列の最初のn個の要素を取得するには、多くの論理メソッドを使用できますが、 underscore.js javascriptのライブラリは、 _.first()と呼ばれる関数を提供しています javascriptの最初のn個の要素を取得します。これは、配列を処理するために広く使用されている方法です。 構文 _.first(array,n); パラメータとして配列と数値を取ります。最初のn個の要素の数を出力として表示するために、パラメーターとして数値を取ります。 例-1 次の例では、配列のみが引数として渡されるため、最初の要素、つまりゼロ番目のみが渡されます。 インデックス値が出力として表

  2. JavaScriptのArray.prototype.sort()。

    JavaScript Array.prototype.sort()メソッドは、配列の並べ替えに使用されます。並べ替えの順序は、アルファベット、数字、昇順、降順のいずれかです。 以下は、Array.prototype.sort()メソッドのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-