JavaScript 配列インスタンスを要約する 9 つの方法

WBOY
リリース: 2022-08-25 19:11:24
転載
2239 人が閲覧しました

この記事は、javascript に関する関連知識を提供します。主に JavaScript 配列インスタンスの 9 つのメソッドを紹介します。このトピックに関する記事の詳細な紹介には特定の参考値がありません。友人が参照できるようにする必要があります。それに。

JavaScript 配列インスタンスを要約する 9 つの方法

[関連する推奨事項: JavaScript ビデオ チュートリアル Web フロントエンド ]

序文

手書きの JS ネイティブ API はインタビューでよく使われます。今日は仕事をしながら (釣りをしながら)、MDN 記事の配列インスタンス メソッドに関する部分に目を向けました。たまたま暇だったので、インスタンス メソッドをいくつか書きました基本的な内容を手書きで確認し、記録します。

JavaScript 配列インスタンスを要約する 9 つの方法

#配列インスタンスの反復メソッドの違いがまだわからない場合は、以下の図を参照してください。

JavaScript 配列インスタンスを要約する 9 つの方法

map

このメソッドは新しい配列を返します。配列内の各項目は、

map が提供するコールバック関数を実行した結果です。

実装コードは次のとおりです:

const map = (array, fun) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== '[object Array]')
    throw new TypeError(array + ' is not a array')
  if (typeof fun !== 'function') throw new TypeError(fun + ' is not a function')

  // 定义一个空数组,用于存放修改后的数据
  let res = []
  for (let i = 0; i < array.length; i++) {
    res.push(fun(array[i]))
  }
  return res
}
// 测试
let res = map([1, 2, 3], item => {
  return item * 2
})
console.log(res) // [ 2, 4, 6 ]
ログイン後にコピー

filter

このメソッドは新しい配列を返し、配列内の値は次の条件を満たします。

filter提供されるコールバック関数の値、

実装コードは次のとおりです:

const filter = (array, fun) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof fun !== &#39;function&#39;) throw new TypeError(fun + &#39; is not a function&#39;)

  // 定义一个空数组,用于存放符合条件的数组项
  let res = []
  for (let i = 0; i < array.length; i++) {
    // 将数组中的每一项都调用传入的函数,如果返回结果为true,则将结果push进数组,最后返回
    fun(array[i]) && res.push(array[i])
  }
  return res
}
// 测试
let res = filter([1, 2, 3], item => {
  return item > 2
})
console.log(res) // [ 3 ]
ログイン後にコピー

some

このメソッド配列内の各項目を判定し、いずれかの項目がコールバック関数の条件を満たしていれば

true を返し、どれも満たしていない場合は false を返します。

実装コードは次のとおりです:

const some = (array, fun) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof fun !== &#39;function&#39;) throw new TypeError(fun + &#39; is not a function&#39;)
  let flag = false
  for (let i of array) {
    if (fun(i)) {
      flag = true
      break
    }
  }
  return flag
}
let res = some([1, 2, 3], item => {
  return item > 2
})
console.log(res) // true
ログイン後にコピー

every

このメソッドは配列内の各項目を判定します。コールバック関数。

true を返し、それ以外の場合は false を返します。

実装コードは次のとおりです:

const every = (array, fun) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof fun !== &#39;function&#39;) throw new TypeError(fun + &#39; is not a function&#39;)
  let flag = true
  for (let i of array) {
    if (!fun(i)) {
      flag = false
      break
    }
  }
  return flag
}
let res = every([1, 2, 3], item => {
  return item > 0
})
console.log(res) // true
ログイン後にコピー

reduce

このメソッドは、配列内の各要素にコールバック関数を実行させます。提供し、結果を要約して返します。実装コードは次のとおりです。

const reduce = (array, fun, initialValue) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof fun !== &#39;function&#39;) throw new TypeError(fun + &#39; is not a function&#39;)
  let accumulator = initialValue
  for (let i = 0; i < array.length; i++) {
    accumulator = fun(accumulator, array[i], i, array)
  }
  return accumulator
}
const arr = [1, 2, 3]
console.log(arr.reduce(v => v + 10, 10)) // 40
console.log(reduce(arr, v => v + 10, 10)) // 40
ログイン後にコピー

forEach

このメソッドは比較的単純で、配列を走査するものです。メソッド、配列内の各項目が実行されます。 コールバック関数、実装コードは次のとおりです:

const forEach = (array, fun) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof fun !== &#39;function&#39;) throw new TypeError(fun + &#39; is not a function&#39;)

  for (let i of array) {
    fun(i)
  }
}
let res = forEach([1, 2, 3], item => {
  console.log(item)
})
ログイン後にコピー

find と findIndex

これら 2 つのメソッドは比較的似ています。要素を返し、もう 1 つは要素のインデックスを返します。ここでは 1 つを記述します。実装コードは次のとおりです。

const myFind = (array, fun) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof fun !== &#39;function&#39;) throw new TypeError(fun + &#39; is not a function&#39;)
  let res
  for (let i = 0; i < array.length; i++) {
    if (fun(array[i])) {
      res = array[i]
    }
  }
  return res
}
// 测试
let res = myFind([1, 2, 3], item => {
  return item > 2
})
console.log(res) // 3
ログイン後にコピー

join

このメソッドは、要素内のすべての要素を結合できます。指定された文字列に従って配列を取得し、結合された文字列を返します。

実装コードは次のとおりです:

const join = (array, separator = &#39;,&#39;) => {
  // 类型约束
  if (Object.prototype.toString.call(array) !== &#39;[object Array]&#39;)
    throw new TypeError(array + &#39; is not a array&#39;)
  if (typeof separator !== &#39;string&#39;)
    throw new TypeError(separator + &#39; is not a string&#39;)
  let res = array[0].toString()
  for (let i = 0; i < array.length - 1; i++) {
    res += separator + array[i + 1].toString()
  }
  return res
}
// 测试
let res = join([1, 2, 3], &#39;-&#39;)
console.log(res) // 1-2-3
ログイン後にコピー

[関連する推奨事項:

JavaScript ビデオ チュートリアルウェブ フロントエンド]

以上がJavaScript 配列インスタンスを要約する 9 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!