JavaScript関連のことを調べてみた

JavaScript関連のことを調べてみた

オブジェクト配列の最小値と最大値を取得したい時はMath.min()とMath.max()

## はじめに

以下のようなオブジェクト配列があるとします。
“`ts
const priceList = [
{
id: 1,
price: 1300
},
{
id: 2,
price: 400
},
{
id: 3,
price: 100
},
{
id: 4,
price: 17200
}
]
“`

この時、priceの最小値と最大値を取得するにはどうしたらいいでしょうか?

## 解決策

1\. `sort()`関数を使う
`sort()`で配列をソートしてからその先頭と末尾を取得する方法です。

“`ts
const sortedPriceList = priceList.map((v) => v.price).sort((a, b) => {
return a – b;
});

const minPrice = sortedPriceList[0]

元記事を表示

JavaScriptの再帰関数とスタックオーバーフロー    〜トランポリンに非同期処理を添えて〜 ②

# 閑話休題
[株式会社 ONE WEDGE](https://qiita.com/organizations/onewedge)の [@Shankou](https://qiita.com/shankou) です。

[前回に引き続き](https://qiita.com/Shankou/items/141e2cc12a29693b151a)、JavaScriptの再帰関数についてのお話となります。前回までで、末尾再帰による最適化がJavaScriptではサポートされていないという話をしました。そして、末尾再帰による最適化が行われない場合はどうすればいいのか、というところで登場するのがトランポリンという手法になります。

今回は、トランポリンとはなんぞやというお話から、、、

# トランポリンとは
トランポリン(もしくはトランポリン化)とは、再帰関数をループ(繰り返し処理)でラップすることで、スタックを積むことなく処理を行うというものです。「おい!ループは悪だって言ったじゃん」と思われるかもしれませんが、状態変数を持たないループを用いて処理を構築していきます。

前項の階乗を計算

元記事を表示

JavaScriptの再帰関数とスタックオーバーフロー    〜トランポリンに非同期処理を添えて〜 ①

# はじめに
初投稿になります、[株式会社 ONE WEDGE](https://qiita.com/organizations/onewedge)の [@Shankou](https://qiita.com/shankou) です。

今回はJavaScriptの非同期関数の再帰処理についてのすごくふんわりとした解説記事になります。
アルゴリズムの専門家でも、言語の設計者でもない、主に先輩風を吹かせて後輩に読ませようと思って書いているだけの記事となりますので、間違いがあったら優しく指摘していただけると嬉しいです。主に初心者から中級者の方向けの内容になりますので、あまり深く突っ込まないでください。

~~二重三重の予防線~~

Scalaを触っていた経験から、末尾再帰とトランポリンについてのぼんやりとした理解は持っていましたが、少し前に仕事で「JavaScriptで非同期関数の再帰呼び出し」を考えなきゃいけない機会がありましたので、知識の整理がてらちょっとまとめてみようと思った次第です。

# 再帰関数
再帰関数って何? っていう初心者の方は、こちらの解説記事( [再帰関数を学ぶ

元記事を表示

素人なりにJavaScriptを独学してみる話

# 自己紹介と意気込み

文系の学部卒で未経験ながらエンジニアになりました
目にする言語はJava,JavaScript,Delphi,Cobol等々です。

意識しているのは

– 右辺と左辺を分けて整理する
– if文の条件を言語化する
– デバッグして引っかける

の3つでなんとか業務に食らいついている感じです。

また古い製品を保守する現場なので今風なTypeScriptとかVueといった
ナウでヤングな今風”エンジニア”っぽい言語を目にする機会は業務上なさそうです

とはいえ、せっかくエンジニアというキャリアを歩んでいるので
業務で培った知識を横展開してみよう、ということでJavaScriptを独学してみることにしました!

# 書籍を選ぶ

– 分厚くサンプルコードが多数あり今後辞書代わりにもなる
– ハンズオンがありアプリ開発を経験できる
– オープンソースでGitHub上でも読めてしまう

という点から書籍を購入することにしました。
いい値段がしますが社内の書籍購入制度にお世話になりました。

◆web版はこんな感じです↓

https://jsprimer.net/

元記事を表示

scroll-margin-topが指定できなくて困った

# 背景
各セクションに移動した際、追従ヘッダに遷移先の要素が隠れてしまう際にscroll-margin-topを使って解消するかと思います。

https://developer.mozilla.org/ja/docs/Web/CSS/scroll-margin-top

input要素にscroll-margin-topを指定しても、隠れてしまうままで詰まっていた為です。

# input要素にscroll-margin-topを指定できない理由
scroll-margin-topはスクロールされる要素に指定できる為です。
スクロールされる要素というのは、 block レベル要素です。

## block レベル要素
見出し・段落・表など、文書を構成する基本となる要素で、一つのかたまり(ブロック)に意味や役割を与える要素

block レベル要素の例は以下です。
“`


元記事を表示

なんとかしてカップルを別れさせたい[前編]

## はじめに
今まで知らなかったのですが、どうやら世の中にはカップルというものが蔓延っているようです。
自分はそういったカップルをなんとかして別れさせたいと思い、この記事を書いています。

## 別れさせるとは
その文字の通りです。
コトバンク(のデジタル大辞泉)で調べたところ、「一緒にいたものが離れ離れになる。互いに離れて去る。」と書いてありました。
つまり、離れ離れにすればいいということですね。

https://kotobank.jp/word/%E5%88%A5%E3%82%8C%E3%82%8B-664730

とはいえ、部外者の自分がどんなに頑張っても本人たちの一緒にいたいという心の衝動が止められるとは思いません。
なので、直接ではなく、間接的に別れさせるようにしたいと思います。

調べたところ、エスニックジョークといったものでは日本人はみんながやっていることに倣う傾向があるようです。[^1]
なので、この世からカップルという概念をなくせば、カップルでいることが異常であると思い、別れていくのではないでしょうか。

カップルと言う概念がよく使われるものといえばなんでしょうか

元記事を表示

Javascriptの変数宣言について

久しぶりにJavascriptの作業をする際、
よく `let` と `const` の機能が、どっちがどっちか分からなくなります。
そのため`var`を含め、まずはそれぞれの機能をおさらいします。

var
・再宣言や再代入が可能
・変数の巻き上げによってエラーを出さない
・非推奨ではないが、下記で対応可能であればそちらを使う。
let
・変数を宣言する時
・再代入が可能
・巻き上げ時にエラーが発生
const
・定数を宣言する時
・再宣言も再代入もできない
・巻き上げ時にエラーが発生

英単語を覚えていれば何となく分かりそうですが、
私はとっさに出てこないため、何かいい覚え方を考えてみました。

無理やりですが、`const`を「co [こ] てい(固定)」と覚えれば、しばらく経っても覚えていられるかな…。
(そもそも英単語を覚えればOKなのですが)

次回、

元記事を表示

@changeイベントで発火しない

# はじめに
2023年7月より未経験でエンジニアとして働いています。
普段、laravel+vue3を使ったウェブアプリの制作を担当しています。
業務を行っていく中で学んだことを発信してきたいと思います。

# 参考記事
[HTMLElement: change イベント](https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/change_event)

# 何をしたかったか?
![プレゼンテーション1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666919/6c4fd7e2-0a18-ea99-26d2-2342146281e8.png)

vueでフロント側の実装をしている際に、とある箇所の背景色をカラーピッカーを使って、ユーザーの好きな色に変更できる様にしよう!と実装していた時のこと。

– ユーザーがカラーピッカーで色を選ぶと上のカラーコードも連動し変わる
– カラーコードを直接入力しても色の変更ができる

上記の状態で

元記事を表示

GoogleMapsAPIでハマった話

私が業務中にGoogleMapsAPIでハマった話についての備忘録です。
# GoogleMapsAPIについて
GoogleMapsAPIとは、Googleマップを表示する際に独自にカスタマイズして使用できるようにするAPIです。
GoogleマップをカスタマイズするためのAPIは大きく分けて「モバイルAPI」「ウェブAPI」「ウェブサービスAPI」の3つのようです。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628676/7e484e7e-da0f-3701-2ca9-f685cb17fba2.png)
今回使用したのはウェブAPIの「JavaScript API」

# 本題
シナリオテスト中に「検索結果が1件の時にリクエストが再度送られている」という不具合が発生しました。

以下が実際のコードの省略版になります。
“`javascript:maps.js
this.map = new this.google.maps.Map(target, {
~~~ 省略 ~

元記事を表示

知っていると良い実装ができるかもしれない小ネタ集

## `list-style-type:none`が当たっている時の注意点
`list-style-type:none`を利用するとアクセシビリティツリー状でリストとして認識されなくなります。

https://developer.mozilla.org/ja/docs/Web/CSS/list-style#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B7%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3%E3%81%AE%E8%80%83%E6%85%AE

リセットCSSを利用している場合、リストのデフォルトスタイルがキャンセルされていることが多いと思います。

:::note info
アクセシビリティを意識する場合は`role=”list”`を付与してください!
:::

## JSXの中で文字列を展開するときは…
ブラウザのdevツールで確認した際の見え方まで意識できていませんでした…

:::note warn
表示が変わるわけではないのですが、不要なものがレンダリングされてしまうのは不本意ですよね…
:::

実際のコードで書

元記事を表示

【マ?】あなたが知らないかもしれないReactのホント【メモ化編】

みなさん、おはようございます:runner:!
@f0lstです!

この記事はAteam LifeDesign Advent Calendar 2023 の 15日目の記事になります :santa:

## :point_up: はじめに

**全国47都道府県**のReactを学ぶ紳士淑女の皆さん!
毎日、自己研鑽おつかれさまです :santa_tone1:

やあああ、スキルアップって楽しいですね :relaxed:(唐突)

## :smiling_imp: あなたが知らないかもしれないReactのホント

「**あなたが知らないかもしれないReactのホント**」とは大きく出てしまいました :baby_tone1:

紹介させていただくのは、**公式ドキュメントからの抜粋**です。
詳しくみたい方は是非公式も見に行ってください :see_no_evil:

記念すべき**第一回**は**メモ化**についてお話ししていきます :sp

元記事を表示

DiscordBot 機能制作の流れ

# 「プログラミングしてみよう!!」

## 1\.はじめに
こんにちは。 アドカレと言う文化をついこないだ知った人です。
N中等部生です。

今回は私がいつもDiscordのBotを作る時の機能面で気をつけていることなどを、できるだけわかりやすく初心者の解説をつけながら話したいと思います。
#### ※この記事はJavaScriptを使用していますが、JavaScriptがわからなくても読めるような解説を目指しています

プログラミングをあまり知らない人向け

以下はほぼ全てのプログラミング言語に共通することです。
### 1\.ドット
ドット(.)は「その中の」みたいな意味で
“`js:dot.js
root.image()
“`
は“rootの中のimage()“
という感じ。
これを覚えとくだけでプログラム大体読めるって言っても過言なぐらいです。
### 2\.コメントアウト
“//“はコメントアウトと言い、プログラムの処理から除外されます
コード内に書けるメモです
“`js:commentout.js
con

元記事を表示

Slackポスト時にメンションに”さま”を自動付加させたかった(失敗)

![slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210612/5d800425-2c03-5d29-a046-c42929df44b9.png)

## はじめに
Slackを使ってると @〜〜 さま という様にさま付けでメンションする事が多く見受けられます。個人的意見としてはSlackメンションで”さま”を付けるのは、非常に無駄だし、やらんでも良いと思ってるのですが。。
一部の方々からしたら、(“さま”をつけないのは呼び捨てで呼ばれてる感じがする、失礼)という意見もあるらしく、潜在的に失礼を働くのも嫌だな〜、と思いました。
そんな経緯もあり、そもそも自動的に”さま”って付けられんの?と思ったのが発端です。

## 仕組みを考える
SlackにはBotを作ったりAPIでメッセージ内容を見たり投稿したりする機能が備わってます。
Botが任意のチャンネルを監視して、”さま”無しメンションの投稿をしたら、Botが修正してくれるみたいなのをイメージしました。今回はBolt for JavaScri

元記事を表示

GSAP ScrollTriggerでスクロールでカードが重なっていくアニメーションを作る

## 完成イメージ

![ezgif-4-6448dec915.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617150/0b38cbad-e77c-e525-bb49-c07c4f7b4562.gif)

## Codepen

以下のCodepenでも確認できます!

## 実装

### HTML
“`HTML

WALL-E【JointJS】Anchor設定でLinkの端点位置を指定する

## Anchorとは

ElementをLinkでつなぐとき、デフォルトではLinkの始点と終点はElementの位置によって自動で決定されます。
ですが、図形によっては始点・終点の位置が自動で決まってしまうと不都合な場合があります。
AnchorはElementの始点・終点の方向を指定できる設定です。始点・終点を意図した位置に設置できます。

## Anchorの指定方法

### Paper全体のデフォルトを指定

Paperの`defaultAnchor`を指定することで、Anchorのデフォルト値を設定できます。

“`js
var paper = new joint.dia.Paper({

// (中略)

defaultAnchor: {
name: ‘midSide’,
}
});

“`

### Linkごとに指定

LinkごとにAnchorを指定することで、個別に設定ができます。

“`js
link.source(rectangle1, {
anchor: {
name: ‘topRight’,
}

元記事を表示

||演算子の短絡評価の罠:甘く見ると痛い目見るぞ!!

## はじめに
**短絡評価**という言葉を聞いたことはありますか?
JavaScriptの`||演算子`が絡む条件文で、この特性を理解しておらず、意図しない結果になってしまったことがあります。
実際のコード例を通して、`||`の挙動や、これにまつわるドモルガンの法則などを解説します。
私と同じようなプログラミング初心者の方の参考になれば嬉しいです。

### 自己紹介
私は2023年9月1日にフロントエンドエンジニアとして自社開発のSaaS企業に入社しました。
未経験独学で、薬剤師からの転職です。
詳しくはこちらをご覧ください。

https://qiita.com/odendayoko/items/f616b2f1952897a9af5d

## 具体例で説明
### 背景
実務で条件の判定に関してリファクタすることになり、元のコードをもとにどのように書くかを検討していました。
元のコードと同じ意味になるように書き換えたつもりでしたが、実際は意味が変わってしまい意図しない挙動になってしまいました。

### 問題
こちらが元のコードです。
“`react
![‘野球部’, ‘サッ

元記事を表示

【React】クリックに関するイベント【JavaScript】

クリックに関するイベントは次のとおり。

| イベント | 説明 |
| —- | —- |
| mousedown | 要素上でマウスが押下された |
| mouseup | 要素上でマウスが離された |
| click | 要素上でマウスが押下され、離された |

イベントの発生順は次のとおり。

`mousedown` → `mouseup` → `click`

`blur`との関係は次のとおり。

`mousedown` → `blur` → `mouseup` → `click`

元記事を表示

Kintone Customization Debugging Tool – Field Code Table

Ever get frustrated debugging a Kintone customization because you cannot remember the field codes for the app?
I made a bookmarklet to generate a markdown table of field codes for a Kintone App.

This article covers the installation, usage, and how the bookmarklet works.

## TL;DR

[kintone-tool-app-field-code-table.js](https://github.com/ahandsel/articles/blob/master/kintone-tool-app-field-code-table/kintone-tool-app-field-code-table.js) is a bookmarklet that outputs a markdown table with the

元記事を表示

Javascript基礎学習④要素の取得・書換・追加・削除

勉強した事の復習!!

参考書籍:確かな力が身につくJavaScript「超」入門

## 要素を取得
・id属性から取得。
“`
document.getElementById(‘id名’)
“`

・タグ名を持つ要素から取得。
※複数の要素にマッチした場合は、最初にマッチした要素1つだけを取得する。
“`
document.querySelector(“CSSセレクタ”)
“`
・タグ名を持つ複数の要素を取得したい場合。
“`
document.querySelectorAll( CSSセレクタ )
“`

## 要素の書換
・取得した要素の書換
“`
document.getElementById(“id名”).textContent = 書き換えたい文字列;
“`

## 要素の追加
・取得した要素を追加
“`
取得した要素.insertAdjacentHTML(‘挿入する場所’,’挿入する要素’)
“`
挿入する場所を指定するには、下記のキーワードを使用する。

| キーワード| 挿入する場所 |
| —- | —- |
| befo

元記事を表示

【JavaScript/テスト】素のスクリプトを、GitHub Actionsでコードテストさせる

## はじめに
自分の環境を汚さずに、単体テストしたいですよね。

特に環境が重い重い`Node.js`アンチの僕は、ブラウザ用のためだけにJavaScriptライブラリを単体テストしたいと思っても、テストのためだけに`npm`なんたらかんたらで自分の環境を汚したくありません。

なので、`GitHub`に肩代わりしてもらいましょう。

## 手順

### 素ファイルをエクスポート
テストしたい素`.js`ファイルの末尾に、この2行を追加
“`javascript
if (typeof module !== “undefined”)
module.exports = { 関数あるいはクラス }
“`
これは`Node.js`用の処理ですが、見ての通り`if`文で限定しているので、`Node.js`不使用時には影響を及ぼしません。

### テストコード
`Jest`を使います

テストコードのファイル名は
`(ファイル名).test.js`
にしてください

例です。
“`javascript
//import
const {Quaternion} = require

元記事を表示

OTHERカテゴリの最新記事