検索

JavaScript ネイティブ配列関数の説明

Aug 09, 2017 pm 01:53 PM
javascriptjs説明する

JavaScript では、JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明 コンストラクターを使用してJavaScript ネイティブ配列関数の説明を作成することも、JavaScript ネイティブ配列関数の説明リテラル [] を使用することもできます。後者が推奨される方法です。 JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明 オブジェクトは Object.prototype を継承しており、JavaScript ネイティブ配列関数の説明に対して typeof 演算子を実行すると、object が返されます。コード>JavaScript ネイティブ配列関数の説明コード>。ただし、[]instanceofJavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明true も返します。つまり、strings オブジェクト、arguments オブジェクト、および arguments オブジェクトなど、JavaScript ネイティブ配列関数の説明のようなオブジェクトの実装はより複雑です。 code>JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明 インスタンスですが、 length 属性があり、インデックスを通じて値を取得できるため、JavaScript ネイティブ配列関数の説明のようにループできます。 JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明构造函数,或者使用数组直接量[],后者是首选方法。JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明对象继承自Object.prototype,对数组执行typeof操作符返回object而不是array。然而,[] instanceof JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明也返回true。也就是说,类数组对象的实现更复杂,例如strings对象、arguments对象,arguments对象不是JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明的实例,但有length属性,并能通过索引取值,所以能像数组一样进行循环操作。 

在本文中,我将复习一些数组原型的方法,并探索这些方法的用法。

  • 循环:.forEach

  • 判断:.some.every

  • 区分.join.concat

  • 栈和队列的实现:.pop, .push, .shift,和 .unshift

  • 模型映射:.map

  • 查询:.filter

  • 排序:.sort

  • 计算:.reduce.reduceRight

  • 复制:.slice

  • 强大的.splice

  • 查找:.indexOf

  • 操作符:in

  • 走近.reverse

JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明

循环:.forEach

这是JavaScript中最简单的方法,但是IE7和IE8不支持此方法。
.forEach 有一个回调函数作为参数,遍历数组时,每个数组元素均会调用它,回调函数接受三个参数:

  • value:当前元素

  • index:当前元素的索引

  • array:要遍历的数组
    此外,可以传递可选的第二个参数,作为每次函数调用的上下文(this).

['_', 't', 'a', 'n', 'i', 'f', ']'].forEach(function (value, index, array) {    this.push(String.fromCharCode(value.charCodeAt() + index + 2))
}, out = [])out.join(&#39;&#39;)// <- &#39;awesome&#39;123456

后文会提及.join,在这个示例中,它用于拼接数组中的不同元素,效果类似于out[0] + '' + out[1] + '' + out[2] + '' + out[n]
不能中断.forEach循环,并且抛出异常也是不明智的选择。幸运的事我们有另外的方式来中断操作。

判断:.some.every

如果你用过.NET中的枚举,这两个方法和.Any(x => x.IsAwesome).All(x => x.IsAwesome)类似。
.forEach的参数类似,需要一个包含valueindex,和array三个参数的回调函数,并且也有一个可选的第二个上下文参数。MDN对.some的描述如下:

some将会给数组里的每一个元素执行一遍回调函数,直到回调函数返回true。如果找到目标元素,some立即返回true,否则some返回false。回调函数只对已经指定值的数组索引执行;它不会对已删除的或未指定值的元素调用。

max = -Infinity
satisfied = [10, 12, 10, 8, 5, 23].some(function (value, index, array) {    if (value > max) max = value    return value < 10})

console.log(max)// <- 12satisfied// <- true1234567891011

注意,当回调函数的value 时,中断函数循环。<code>.every的运行原理和.some类似,但回调函数是返回false而不是true。

区分.join.concat

.join.concat 经常混淆。.join(separator)separator作为分隔符拼接数组元素,并返回字符串形式,如果没有提供separator,将使用默认的,.concat会创建一个新数组,作为源数组的浅拷贝。

  • .concat常用用法:array.concat(val, val2, val3, valn)

  • .concat返回一个新数组

  • array.concat()

    この記事では、JavaScript ネイティブ配列関数の説明プロトタイプ メソッドのいくつかを確認し、その使用法を検討します。 🎜
    • 🎜ループ: .forEach🎜
    • 🎜判定: .some および .every🎜
    • 🎜 .join.concat を区別します🎜
    • 🎜 スタックとキュー実装: .pop.push.shift、および .unshift🎜
    • 🎜モデルマッピング: .map🎜
    • 🎜クエリ: .filter🎜
    • 🎜並べ替え: .sort🎜
    • 🎜計算: .reduce および .reduceRight🎜
    • 🎜コピー: .slice🎜
    • 🎜強力な .splice🎜
    • 🎜検索: .indexOf🎜
    • 🎜演算子: in🎜
    • 🎜 .reverse にアプローチします🎜
    🎜JavaScript ネイティブ配列関数の説明🎜

    ループ:.forEach

    🎜これはJavaScriptで最も簡単な方法ですが、IE7とIE8はこの方法をサポートしていません。 🎜.forEach にはパラメータとしてコールバック関数があり、JavaScript ネイティブ配列関数の説明を走査するときに、このコールバック関数は 3 つのパラメータを受け入れます: 🎜
    • 🎜value: 現在の要素 🎜
    • 🎜index: 現在の要素のインデックス 🎜
    • 🎜array : 反復処理するJavaScript ネイティブ配列関数の説明🎜 さらに、オプションの 2 番目のパラメータを各関数呼び出しのコンテキストとして渡すことができます (this)。🎜
    • var a = { foo: &#39;bar&#39; }
      var b = [1, 2, 3, a]
      var c = b.concat()
      
      console.log(b === c)// <- falseb[3] === a && c[3] === a// <- true123456789
      🎜.join については後述します。この例では、JavaScript ネイティブ配列関数の説明内のさまざまな要素を結合するために使用されます。その効果は out[0] + '' + と似ています。 out[1] + '' + out[2] + '' + out[n]。 🎜 .forEach ループを中断することはできません。例外をスローするのは賢明ではありません。幸いなことに、操作を中断する別の方法があります。 🎜

      判定: .some.every

      🎜 .NET で列挙型を使用した場合、これら 2 つのメソッドは と同じです。 Any(x => x.IsAwesome).All(x => x.IsAwesome) は似ています。 🎜 .forEach のパラメータと同様に、valueindexarray の 3 つのパラメータを含むコールバックが必要です。 > 関数であり、オプションの 2 番目のコンテキスト パラメーターもあります。 MDN では .some を次のように説明しています: 🎜
      🎜some は、コールバック関数が true を返すまで、JavaScript ネイティブ配列関数の説明内の各要素に対してコールバック関数を実行します。ターゲット要素が見つかった場合、some はすぐに true を返します。それ以外の場合、some は false を返します。コールバック関数は、値が割り当てられたJavaScript ネイティブ配列関数の説明インデックスに対してのみ実行され、削除された要素や割り当てられていない要素に対しては呼び出されません。 🎜
      function Stack () {    this._stack = []
      }
      
      Stack.prototype.next = function () {    return this._stack.pop()
      }
      
      Stack.prototype.add = function () {    return this._stack.push.apply(this._stack, arguments)
      }
      
      stack = new Stack()
      stack.add(1,2,3)
      
      stack.next()// <- 31234567891011121314151617
      🎜 コールバック関数の value の場合、関数ループが中断されることに注意してください。 <code>.every の動作原理は .some と似ていますが、コールバック関数は true ではなく false を返します。 🎜

      .join.concat

      を区別します🎜.join.concat は次のとおりです。よく混同されます。 .join(separator) は、JavaScript ネイティブ配列関数の説明要素を結合するためのセパレータとして separator を使用し、separator が指定されていない場合は、デフォルトの文字列形式を返します。 、コード>が使用されます。 .concat は、ソースJavaScript ネイティブ配列関数の説明の浅いコピーとして新しいJavaScript ネイティブ配列関数の説明を作成します。 🎜
      • 🎜.concat一般的な使用法: array.concat(val, val2, val3, valn)🎜
      • 🎜.concat新しいJavaScript ネイティブ配列関数の説明を返します🎜
      • 🎜array.concat()パラメータがない場合は、ソースの浅いコピーを返しますJavaScript ネイティブ配列関数の説明の。 🎜浅いコピーは、新しいJavaScript ネイティブ配列関数の説明が元のJavaScript ネイティブ配列関数の説明と同じオブジェクト参照を維持することを意味し、これは通常は良いことです。例: 🎜
      var a = { foo: &#39;bar&#39; }
      var b = [1, 2, 3, a]
      var c = b.concat()
      
      console.log(b === c)// <- falseb[3] === a && c[3] === a// <- true123456789

      栈和队列的实现:.pop, .push, .shift.unshift

      每个人都知道.push可以再数组末尾添加元素,但是你知道可以使用[].push('a', 'b', 'c', 'd', 'z')一次性添加多个元素吗?
      .pop 方法是.push 的反操作,它返回被删除的数组末尾元素。如果数组为空,将返回void 0 (undefined),使用.pop.push可以创建LIFO (last in first out)栈。

      function Stack () {    this._stack = []
      }
      
      Stack.prototype.next = function () {    return this._stack.pop()
      }
      
      Stack.prototype.add = function () {    return this._stack.push.apply(this._stack, arguments)
      }
      
      stack = new Stack()
      stack.add(1,2,3)
      
      stack.next()// <- 31234567891011121314151617

      相反,可以使用.shift.unshift创建FIFO (first in first out)队列。

      function Queue () {
          this._queue = []
      }
      
      Queue.prototype.next = function () {    return this._queue.shift()
      }
      
      Queue.prototype.add = function () {    return this._queue.unshift.apply(this._queue, arguments)
      }
      
      queue = new Queue()
      queue.add(1,2,3)
      
      queue.next()// <- 1Using .shift (or .pop) is an easy way to loop through a set of array elements, while draining the array in the process.
      
      list = [1,2,3,4,5,6,7,8,9,10]while (item = list.shift()) {
          console.log(item)
      }
      
      list// <- []123456789101112131415161718192021222324252627

      模型映射:.map

      .map为数组中的每个元素提供了一个回调方法,并返回有调用结果构成的新数组。回调函数只对已经指定值的数组索引执行;它不会对已删除的或未指定值的元素调用。

      JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.map 和上面提到的.forEach.some.every有相同的参数格式:.map(fn(value, index, array), thisArgument)

      values = [void 0, null, false, &#39;&#39;]
      values[7] = void 0result = values.map(function(value, index, array){    console.log(value)    return value
      })// <- [undefined, null, false, &#39;&#39;, undefined × 3, undefined]12345678

      undefined × 3很好地解释了.map不会对已删除的或未指定值的元素调用,但仍然会被包含在结果数组中。.map在创建或改变数组时非常有用,看下面的示例:

      // casting[1, &#39;2&#39;, &#39;30&#39;, &#39;9&#39;].map(function (value) {    return parseInt(value, 10)
      })// 1, 2, 30, 9[97, 119, 101, 115, 111, 109, 101].map(String.fromCharCode).join(&#39;&#39;)// <- &#39;awesome&#39;// a commonly used pattern is mapping to new objectsitems.map(function (item) {    return {
              id: item.id,
              name: computeName(item)
          }
      })12345678910111213141516

      查询:.filter

      filter对每个数组元素执行一次回调函数,并返回一个由回调函数返回true的元素组成的新数组。回调函数只会对已经指定值的数组项调用。

      通常用法:.filter(fn(value, index, array), thisArgument),跟C#中的LINQ表达式和SQL中的where语句类似,.filter只返回在回调函数中返回true值的元素。

      [void 0, null, false, &#39;&#39;, 1].filter(function (value) {    return value
      })// <- [1][void 0, null, false, &#39;&#39;, 1].filter(function (value) {    return !value
      })// <- [void 0, null, false, &#39;&#39;]123456789

      排序:.sort(compareFunction)

      如果没有提供compareFunction,元素会被转换成字符串并按照字典排序。例如,”80”排在”9”之前,而不是在其后。

      跟大多数排序函数类似,JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.sort(fn(a,b))需要一个包含两个测试参数的回调函数,其返回值如下:

      • a在b之前则返回值小于0

      • a和b相等则返回值是0

      • a在b之后则返回值小于0

      [9,80,3,10,5,6].sort()// <- [10, 3, 5, 6, 80, 9][9,80,3,10,5,6].sort(function (a, b) {    return a - b
      })// <- [3, 5, 6, 9, 10, 80]1234567

      计算:.reduce.reduceRight

      这两个函数比较难理解,.reduce会从左往右遍历数组,而.reduceRight则从右往左遍历数组,二者典型用法:.reduce(callback(previousValue,currentValue, index, array), initialValue)
      previousValue 是最后一次调用回调函数的返回值,initialValue则是其初始值,currentValue是当前元素值,index是当前元素索引,array是调用.reduce的数组。
      一个典型的用例,使用.reduce的求和函数。

      JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.sum = function () {    return this.reduce(function (partial, value) {        return partial + value
          }, 0)
      };
      
      [3,4,5,6,10].sum()// <- 2812345678

      如果想把数组拼接成一个字符串,可以用.join实现。然而,若数组值是对象,.join就不会按照我们的期望返回值了,除非对象有合理的valueOftoString方法,在这种情况下,可以用.reduce实现:

      function concat (input) {    return input.reduce(function (partial, value) {        if (partial) {            partial += &#39;, &#39;
              }        return partial + value
          }, &#39;&#39;)
      }
      
      concat([
          { name: &#39;George&#39; },
          { name: &#39;Sam&#39; },
          { name: &#39;Pear&#39; }
      ])// <- &#39;George, Sam, Pear&#39;123456789101112131415

      复制:.slice

      .concat类似,调用没有参数的.slice()方法会返回源数组的一个浅拷贝。.slice有两个参数:一个是开始位置和一个结束位置。
      JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.slice 能被用来将类数组对象转换为真正的数组。

      JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.slice.call({ 0: &#39;a&#39;, 1: &#39;b&#39;, length: 2 })
      // <- [&#39;a&#39;, &#39;b&#39;]12

      这对.concat不适用,因为它会用数组包裹类数组对象。

      JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.concat.call({ 0: &#39;a&#39;, 1: &#39;b&#39;, length: 2 })
      // <- [{ 0: &#39;a&#39;, 1: &#39;b&#39;, length: 2 }]12

      此外,.slice的另一个通常用法是从一个参数列表中删除一些元素,这可以将类数组对象转换为真正的数组。

      function format (text, bold) {    if (bold) {        text = &#39;<b>&#39; + text + &#39;</b>&#39;
          }
          var values = JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明.prototype.slice.call(arguments, 2)
      
          values.forEach(function (value) {        text = text.replace(&#39;%s&#39;, value)
          })    return text}format(&#39;some%sthing%s %s&#39;, true, &#39;some&#39;, &#39;other&#39;, &#39;things&#39;)// <- <b>somesomethingother things</b>123456789101112131415

      强大的.splice

      .splice 是我最喜欢的原生数组函数,只需要调用一次,就允许你删除元素、插入新的元素,并能同时进行删除、插入操作。需要注意的是,不同于`.concat.slice,这个函数会改变源数组。

      var source = [1,2,3,8,8,8,8,8,9,10,11,12,13]
      var spliced = source.splice(3, 4, 4, 5, 6, 7)
      
      console.log(source)// <- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ,13]spliced// <- [8, 8, 8, 8]12345678

      正如你看到的,.splice会返回删除的元素。如果你想遍历已经删除的数组时,这会非常方便。

      var source = [1,2,3,8,8,8,8,8,9,10,11,12,13]var spliced = source.splice(9)
      
      spliced.forEach(function (value) {
          console.log(&#39;removed&#39;, value)
      })// <- removed 10// <- removed 11// <- removed 12// <- removed 13console.log(source)// <- [1, 2, 3, 8, 8, 8, 8, 8, 9]12345678910111213

      查找:.indexOf

      利用.indexOf 可以在数组中查找一个元素的位置,没有匹配元素则返回-1。我经常使用.indexOf的情况是当我有比较时,例如:a === 'a' || a === 'b' || a === 'c',或者只有两个比较,此时,可以使用.indexOf['a', 'b', 'c'].indexOf(a) !== -1
      注意,如果提供的引用相同,.indexOf也能查找对象。第二个可选参数用于指定开始查找的位置。

      var a = { foo: &#39;bar&#39; }
      var b = [a, 2]
      
      console.log(b.indexOf(1))// <- -1console.log(b.indexOf({ foo: &#39;bar&#39; }))// <- -1console.log(b.indexOf(a))// <- 0console.log(b.indexOf(a, 1))// <- -1b.indexOf(2, 1)// <- 11234567891011121314151617

      如果你想从后向前搜索,可以使用.lastIndexOf

      操作符:in

      在面试中新手容易犯的错误是混淆.indexOfin操作符:

      var a = [1, 2, 5]1 in a// <- true, but because of the 2!5 in a// <- false1234567

      问题是in操作符是检索对象的键而非值。当然,这在性能上比.indexOf快得多。

      var a = [3, 7, 6]1 in a === !!a[1]// <- true1234

      走近.reverse

      该方法将数组中的元素倒置。

      var a = [1, 1, 7, 8]a.reverse()// [8, 7, 1, 1]1234

      .reverse 会修改数组本身。

      译文出处:http://www.ido321.com/1568.html

      本文根据@Nicolas Bevacqua的《Fun with JavaScript Native JavaScript ネイティブJavaScript ネイティブ配列関数の説明関数の説明 Functions》所译,整个译文带有我自己的理解与思想,如果译得不好或有不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://modernweb.com/2013/11/25/fun-with-javascript-native-array-functions/。

以上がJavaScript ネイティブ配列関数の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。