目次
1. 配列の宣言と初期化
2. 合計値、​​最小値、最大値を求める
3. 文字列、数値、またはオブジェクト配列の並べ替え
0
indexOf() を使用した可能性があります includes()
##forandfor..in
11. アロー関数
arguments のスコープを持たないため、定義されている環境を参照します。
13 を返します。配列をスクランブルする
15. Rest & Spread 运算符
16. 默认参数
17. 将十进制转换为二进制或十六进制
18. 使用解构简单交换两值
19. 单行回文检查
20.将Object属性转成属性数组
ホームページ ウェブフロントエンド jsチュートリアル 仕事の効率を向上させ、二度と残業をしないようにするための 20 の JS スキル!

仕事の効率を向上させ、二度と残業をしないようにするための 20 の JS スキル!

Jul 20, 2022 am 11:13 AM
javascript

この記事では、コード効率を向上させるための 20 の JavaScript のヒントとテクニックを紹介します。残業をしないフロントエンド担当者として役立つことを願っています。

仕事の効率を向上させ、二度と残業をしないようにするための 20 の JS スキル!

私たちは日々のタスクで、並べ替え、検索、一意の値の検索、パラメーターの受け渡し、値の交換などの関数を作成します。そのため、ここでは私の短縮表現のリストをリストしました。チップ!

JavaScript は本当に優れた言語であり、学んで使用する価値があります。特定の問題に対して、同じ解決策に到達する方法が複数ある場合があります。この記事では、最も速いものについてのみ説明します。

これらの方法は間違いなく役立ちます:

  • LOC (コード行) の数を減らす、
  • コーディング コンペティション、
  • ハッカソン
  • またはその他の時間制限のあるタスク。

これらの JavaScript ハックのほとんどは ECMAScript6(ES2015) 以降のテクノロジーを使用していますが、最新バージョンは ECMAScript11(ES2020) です。

==注==: 以下のヒントはすべて、Google Chrome のコンソールでテストされています。

1. 配列の宣言と初期化

デフォルト値 (""、null、または ) を使用して、特定のサイズの配列 0 を初期化できます。すでに 1D 配列にこれらを使用しているかもしれませんが、2D 配列/行列を初期化するにはどうすればよいでしょうか?

const array = Array(5).fill(''); 
// 输出
(5) ["", "", "", "", ""]

const matrix = Array(5).fill(0).map(()=>Array(5).fill(0)); 
// 输出
(5) [Array(5), Array(5), Array(5), Array(5), Array(5)]
0: (5) [0, 0, 0, 0, 0]
1: (5) [0, 0, 0, 0, 0]
2: (5) [0, 0, 0, 0, 0]
3: (5) [0, 0, 0, 0, 0]
4: (5) [0, 0, 0, 0, 0]
length: 5
ログイン後にコピー

2. 合計値、​​最小値、最大値を求める

基本的な数学演算をすばやく見つけるには、reduce メソッドを使用する必要があります。

const array  = [5,4,7,8,9,2];
ログイン後にコピー
  • および
array.reduce((a,b) => a+b);
// 输出: 35
ログイン後にコピー
  • 最大
array.reduce((a,b) => a>b?a:b);
// 输出: 9
ログイン後にコピー
  • 最小
array.reduce((a,b) => a<b?a:b);
// 输出: 2
ログイン後にコピー

3. 文字列、数値、またはオブジェクト配列の並べ替え

文字列の並べ替えには組み込みメソッド sort()reverse() がありますが、数値やオブジェクトの配列はどうなるでしょうか?

数値とオブジェクトの昇順および降順の並べ替え手法を見てみましょう。

    #ソート文字列配列
  • const stringArr = ["Joe", "Kapil", "Steve", "Musk"]
    stringArr.sort();
    // 输出
    (4) ["Joe", "Kapil", "Musk", "Steve"]
    
    stringArr.reverse();
    // 输出
    (4) ["Steve", "Musk", "Kapil", "Joe"]
    ログイン後にコピー
#ソート数値配列
  • const array  = [40, 100, 1, 5, 25, 10];
    array.sort((a,b) => a-b);
    // 输出
    (6) [1, 5, 10, 25, 40, 100]
    
    array.sort((a,b) => b-a);
    // 输出
    (6) [100, 40, 25, 10, 5, 1]
    ログイン後にコピー
  • #オブジェクト配列sort
const objectArr = [
     { first_name: &#39;Lazslo&#39;, last_name: &#39;Jamf&#39;     },
     { first_name: &#39;Pig&#39;,    last_name: &#39;Bodine&#39;   },    
     { first_name: &#39;Pirate&#39;, last_name: &#39;Prentice&#39; }
];
objectArr.sort((a, b) => a.last_name.localeCompare(b.last_name));
// 输出
(3) [{…}, {…}, {…}]
0: {first_name: "Pig", last_name: "Bodine"}
1: {first_name: "Lazslo", last_name: "Jamf"}
2: {first_name: "Pirate", last_name: "Prentice"}
length: 3
ログイン後にコピー
  • 4. 配列から偽の値をフィルタリングします。

0

unknown

、## などの偽の値#null, false, "", '' は、

const array = [3, 0, 6, 7, &#39;&#39;, false];
array.filter(Boolean);
// 输出
(3) [3, 6, 7]
ログイン後にコピー
5 で簡単に省略できます。論理演算子

ネストされた if...else を減らしたり、ケースを切り替えたりする場合は、基本的な論理演算子

AND/OR を使用するだけです。
function doSomething(arg1){ 
    arg1 = arg1 || 10; 
// 如果尚未设置,则将 arg1 设置为 10 作为默认值
return arg1;
}

let foo = 10;  
foo === 10 && doSomething(); 
// is the same thing as if (foo == 10) then doSomething();
// 输出: 10

foo === 5 || doSomething();
// is the same thing as if (foo != 5) then doSomething();
// 输出: 10
ログイン後にコピー

6. 重複する値を削除します

最初に見つかったインデックスまたは新しいインデックスを返す for ループで

indexOf() を使用した可能性があります includes()

配列からブール値 true/false を返し、重複を検索/削除します。ここで、より高速な方法が 2 つあります。

const array  = [5,4,7,8,9,2,7,5];
array.filter((item,idx,arr) => arr.indexOf(item) === idx);
// or
const nonUnique = [...new Set(array)];
// 输出: [5, 4, 7, 8, 9, 2]
ログイン後にコピー
7. カウンター オブジェクトまたはマップを作成する

ほとんどの場合、変数をキーとして持つカウンター オブジェクトまたはマップを作成することで問題を解決する必要があります。が追跡され、その頻度/発生が値として追跡されます。

let string = &#39;kapilalipak&#39;;

const table={}; 
for(let char of string) {
  table[char]=table[char]+1 || 1;
}
// 输出
{k: 2, a: 3, p: 2, i: 2, l: 2}
ログイン後にコピー
and
const countMap = new Map();
  for (let i = 0; i < string.length; i++) {
    if (countMap.has(string[i])) {
      countMap.set(string[i], countMap.get(string[i]) + 1);
    } else {
      countMap.set(string[i], 1);
    }
  }
// 输出
Map(5) {"k" => 2, "a" => 3, "p" => 2, "i" => 2, "l" => 2}
ログイン後にコピー

8. 三項演算子は優れています

条件 if…elseif…elseif をネストするために三項演算子を使用することを避けることができます。

function Fever(temp) {
    return temp > 97 ? &#39;Visit Doctor!&#39;
      : temp < 97 ? &#39;Go Out and Play!!&#39;
      : temp === 97 ? &#39;Take Some Rest!&#39;;
}

// 输出
Fever(97): "Take Some Rest!" 
Fever(100): "Visit Doctor!"
ログイン後にコピー
9. 古いバージョンと比較して、for ループが高速になりました

##forandfor..in

インデックスはデフォルトで与えられますが、arr[index] を使用することもできます。
  • for..in は数値以外も受け入れられるため、これは避けてください。
  • forEach
  • ,for...of要素を直接取得します。
  • forEach もインデックスを提供できますが、for...of はインデックスを提供できません。
  • for および for...of 配列内のホールは考慮されますが、他の 2 つは考慮されません。
  • 10. 2 つのオブジェクトを結合する
  • 通常、日常のタスクでは複数のオブジェクトを結合する必要があります。
const user = { 
 name: &#39;Kapil Raghuwanshi&#39;, 
 gender: &#39;Male&#39; 
 };
const college = { 
 primary: &#39;Mani Primary School&#39;, 
 secondary: &#39;Lass Secondary School&#39; 
 };
const skills = { 
 programming: &#39;Extreme&#39;, 
 swimming: &#39;Average&#39;, 
 sleeping: &#39;Pro&#39; 
 };

const summary = {...user, ...college, ...skills};

// 输出
gender: "Male"
name: "Kapil Raghuwanshi"
primary: "Mani Primary School"
programming: "Extreme"
secondary: "Lass Secondary School"
sleeping: "Pro"
swimming: "Average"
ログイン後にコピー

11. アロー関数

アロー関数式は、従来の関数式に代わるコンパクトな関数ですが、制限があり、すべての状況で使用できるわけではありません。これらは字句スコープ (親スコープ) を持ち、独自の

this

arguments のスコープを持たないため、定義されている環境を参照します。

const person = {
name: &#39;Kapil&#39;,
sayName() {
    return this.name;
    }
}
person.sayName();
// 输出
"Kapil"
ログイン後にコピー

But<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const person = { name: &amp;#39;Kapil&amp;#39;, sayName : () =&gt; { return this.name; } } person.sayName(); // 输出 &quot;&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div>12. オプションのチェーン

オプションのチェーン ?. 値が ? の前にある場合、評価を停止します。未定義または null であり、

undefined。
const user = {
  employee: {
    name: "Kapil"
  }
};
user.employee?.name;
// 输出: "Kapil"
user.employ?.name;
// 输出: undefined
user.employ.name
// 输出: VM21616:1 Uncaught TypeError: Cannot read property &#39;name&#39; of undefined
ログイン後にコピー

13 を返します。配列をスクランブルする

組み込みの

Math.random()

メソッドを使用します。
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
list.sort(() => {
    return Math.random() - 0.5;
});
// 输出
(9) [2, 5, 1, 6, 9, 8, 4, 3, 7]
// Call it again
(9) [4, 1, 7, 5, 3, 8, 2, 9, 6]
ログイン後にコピー

14. Null 合体演算子

Null 合体演算子 (??) は論理演算子で、左オペランドが空または未定義の場合、その右辺を返します。オペランドの場合、そうでない場合は、その左側のオペランドを返します。

const foo = null ?? &#39;my school&#39;;
// 输出: "my school"

const baz = 0 ?? 42;
// 输出: 0
ログイン後にコピー

15. Rest & Spread 运算符

那些神秘的3点...可以休息或传播!?

function myFun(a,  b, ...manyMoreArgs) {
   return arguments.length;
}
myFun("one", "two", "three", "four", "five", "six");

// 输出: 6
ログイン後にコピー

const parts = [&#39;shoulders&#39;, &#39;knees&#39;]; 
const lyrics = [&#39;head&#39;, ...parts, &#39;and&#39;, &#39;toes&#39;]; 

lyrics;
// 输出: 
(5) ["head", "shoulders", "knees", "and", "toes"]
ログイン後にコピー

16. 默认参数

const search = (arr, low=0,high=arr.length-1) => {
    return high;
}
search([1,2,3,4,5]);

// 输出: 4
ログイン後にコピー

17. 将十进制转换为二进制或十六进制

在解决问题的同时,我们可以使用一些内置的方法,例如.toPrecision().toFixed()来实现许多帮助功能。

const num = 10;

num.toString(2);
// 输出: "1010"
num.toString(16);
// 输出: "a"
num.toString(8);
// 输出: "12"
ログイン後にコピー

18. 使用解构简单交换两值

let a = 5;
let b = 8;
[a,b] = [b,a]

[a,b]
// 输出
(2) [8, 5]
ログイン後にコピー

19. 单行回文检查

嗯,这不是一个整体的速记技巧,但它会让你清楚地了解如何使用弦乐。

function checkPalindrome(str) {
  return str == str.split(&#39;&#39;).reverse().join(&#39;&#39;);
}
checkPalindrome(&#39;naman&#39;);
// 输出: true
ログイン後にコピー

20.将Object属性转成属性数组

使用Object.entries(),Object.keys()和Object.values()
const obj = { a: 1, b: 2, c: 3 };

Object.entries(obj);
// 输出
(3) [Array(2), Array(2), Array(2)]
0: (2) ["a", 1]
1: (2) ["b", 2]
2: (2) ["c", 3]
length: 3

Object.keys(obj);
(3) ["a", "b", "c"]

Object.values(obj);
(3) [1, 2, 3]
ログイン後にコピー

【相关推荐:javascript视频教程web前端

以上が仕事の効率を向上させ、二度と残業をしないようにするための 20 の JS スキル!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles