日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的array如何使用map_你应该了解的JavaScript Array.map()五种用途小结

發布時間:2025/3/12 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的array如何使用map_你应该了解的JavaScript Array.map()五种用途小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

從經典的 for 循環到 forEach() 方法,用于迭代數據集合的各種技術和方法比比皆是。但是現在比較流行的方法是 .map() 方法。

.map() 通過指定函數調用一個數組中每一項元素,來創建一個新數組。 .map() 是一種 non-mutating(非變異) 方法,它創建一個新數組,而不是只對調用數組進行更改的 mutating(變異) 方法。這可能很難記住。

語法:

array.map(function(currentValue,index,arr), thisValue)

currentValue:必須。當前元素的值

index:可選。當期元素的索引值

arr:可選。當期元素屬于的數組對象

thisValue:可選。對象作為該執行回調時使用,傳遞給函數,用作 "this" 的值。可改變this指向,

map() 方法返回一個新數組,數組中的元素為原始數組元素調用函數處理后的值。

map() 方法按照原始數組元素順序依次處理元素。

注意:map() 不會對空數組進行檢測。

注意:map() 不會改變原始數組。

在這篇文章中,我們將探討一下 JavaScript 中 .map() 的 4 個值得注意的用法。讓我們開始!

在數組中的每一項元素上調用一個函數

將字符串轉換為數組

在 JavaScript 庫中用于渲染列表

重新格式化數組對象

小技巧使用案例

1. 在數組中的每一項元素上調用一個函數

如前所述,.map() 接受回調函數作為其參數之一,該函數的一個重要參數是由該函數處理的項的當前值。這是一個必需的參數。有了這個參數,我們可以修改數組中的每個單獨項,并在其上創建一個新元素。這里有一個例子:

const sweetArray = [2, 3, 4, 5, 35]

const sweeterArray = sweetArray.map(sweetItem => {

return sweetItem * 2

})

console.log(sweetArray) // [2, 3, 4, 5, 35]

console.log(sweeterArray) // [4, 6, 8, 10, 70]

我們可以看到,原數組 sweetArray 并沒有被修改,所以 .map() 是一種 non-mutating(非變異) 方法。這里值得一提的是 forEach() 方法,它是遍歷數組,對原來的數據操作,會改變原數組。

這甚至可以進一步簡化,使其更清潔:

// 創建一個要使用的函數

const makeSweeter = sweetItem => sweetItem * 2;

// 我們有一個數組

const sweetArray = [2, 3, 4, 5, 35];

// 調用我們制作的函數。更具可讀性

const sweeterArray = sweetArray.map(makeSweeter);

console.log(sweeterArray); // [4, 6, 8, 10, 70]

擁有像 sweetArray.map(makeSweeter) 這樣的代碼可以讓你在跳轉到這段代碼時更具可讀性。

2.將字符串轉換為數組

已知的 .map() 屬于 Array 原型。 我們如何使用它將字符串轉換為數組。 不用擔心,我們不需要再開發一個方法來處理字符串,而是使用特殊的 .call() 方法。

JavaScript 中的所有內容都是對象,方法只是附加到這些對象的函數。 .call() 允許我們利用另一個對象的上下文。 因此,我們將數組中的 .map() 上下文復制到字符串。

.call() 可以傳遞參數,要使用的上下文和“參數原始函數的參數”。 聽起來有點拗口? 這是一個例子:

const name = "Chuloo"

const map = Array.prototype.map

const newName = map.call(name, eachLetter => {

return `${eachLetter}a`

})

console.log(newName) // ["Ca", "ha", "ua", "la", "oa", "oa"]

這里,我們只是在String上使用 .map() 的上下文,并傳遞了 .map() 所期望的函數參數。 你可以看看控制臺里打印出來的內容。

這類似于 String 的 .split() 方法,不過 .split() 方法只能在返回數組之前修改每個單獨的字符串字符。

3.在 JavaScript 庫中用于渲染列表

像 React 這樣的 JavaScript 庫利用 .map() 來渲染列表中的項目。這需要 JSX 語法,但是 .map() 方法包含在類似于 mustache 的 JSX 語法中。這是 React 組件的一個很好的例子。

import React from "react";

import ReactDOM from "react-dom";

const names = ["john", "sean", "mike", "jean", "chris"];

const NamesList = () => (

  • {names.map(name =>
  • {name} )}

);

const rootElement = document.getElementById("root");

ReactDOM.render(, rootElement);

如果你不熟悉 React ,那么我告訴這是 React 中的一個簡單的無狀態組件,它使用列表渲染div。 使用 .map() 渲染單個列表項以迭代最初創建的 names 數組。 此組件使用 ReactDOM 渲染 ID為 root 的 DOM 元素 。

4.重新格式化數組對象

如何處理數組中的對象? .map() 可用于迭代數組中的對象,并以與傳統數組類似的方式,修改每個單獨對象的內容 并返回一個新數組。 這個修改是基于回調函數中返回的內容來完成的。這里有一個例子:

const myUsers = [

{ name: 'chuloo', likes: 'grilled chicken' },

{ name: 'chris', likes: 'cold beer' },

{ name: 'sam', likes: 'fish biscuits' }

]

const usersByFood = myUsers.map(item => {

const container = {};

container[item.name] = item.likes;

container.age = item.name.length * 10;

return container;

})

console.log(usersByFood);

// [{chuloo: "grilled chicken", age: 60}, {chris: "cold beer", age: 50}, {sam: "fish biscuits", age: 30}]

我們所做的就是使用括號和點符號簡單地修改數組中的每個對象。這個用例可以用于在前端應用程序上保存或解析之前處理或壓縮接收到的數據。

5.小技巧使用案例

通常情況下,.map() 方法中的 callback 函數只需要接受一個參數,就是正在被遍歷的數組元素本身。但這并不意味著 map 只給 callback 傳了一個參數。這個思維慣性可能會讓我們犯一個很容易犯的錯誤。 生成新數組元素的 callback 函數,有 三個參數:

currentValue – callback 的第一個參數,數組中正在處理的當前元素,最常用的參數。

index – callback 的第二個參數,數組中正在處理的當前元素的索引。

array – callback 的第三個參數,map 方法被調用的數組。

來看一下例子:

// 下面的語句返回什么呢:

["1", "2", "3"].map(parseInt);

// 你可能覺的會是[1, 2, 3]

// 但實際的結果是 [1, NaN, NaN]

// 通常使用parseInt時,只需要傳遞一個參數.

// 但實際上,parseInt可以有兩個參數.第二個參數是進制數.

// 可以通過語句"alert(parseInt.length)===2"來驗證.

// map方法在調用callback函數時,會給它傳遞三個參數:當前正在遍歷的元素,

// 元素索引, 原數組本身.

// 第三個參數parseInt會忽視, 但第二個參數不會,也就是說,

// parseInt把傳過來的索引值當成進制數來使用.從而返回了NaN.

function returnInt(element) {

return parseInt(element, 10);

}

['1', '2', '3'].map(returnInt); // [1, 2, 3]

// 意料之中的結果

// 也可以使用簡單的箭頭函數,結果同上

['1', '2', '3'].map( str => parseInt(str) );

// 一個更簡單的方式:

['1', '2', '3'].map(Number); // [1, 2, 3]

// 與`parseInt` 不同,下面的結果會返回浮點數或指數:

['1.1', '2.2e2', '3e300'].map(Number); // [1.1, 220, 3e+300]

還有一個非常實用的小技巧,像 .map() ,.reduce(), .filter() 這些方法支持鏈式調用。例如:

var myArr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];

var result = myArr

.map(function(element) {

// 數值大于5的數值視為5

if (element > 5)

return 5;

return element;

})

.reduce(function(prev, element) {

// 與之前的數值加總,回傳后代入下一輪的處理

return prev + element;

}, 0);

// 40

console.log(result);

這代碼看著有點啰嗦是吧?感謝 pythonicx 提供的優化代碼:

var myArr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];

let result = myArr.map(m => m>5 ? 5 : m).reduce((x,y) => x+y);

console.log(result); // 40

小結

在這篇文章中,我們研究了 JavaScript 中 .map() 方法的主要用途。 需要注意的是,與其他方法結合使用時,.map() 的函數可以得到強大的擴展和利用。 嘗試找出更多用例。

總結

以上是生活随笔為你收集整理的python的array如何使用map_你应该了解的JavaScript Array.map()五种用途小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费色站 | 综合爱爱网 | 精品视频免费观看 | xx在线视频 | 成人首页 | 九色在线视频 | 日韩亚洲第一页 | 五月婷婷影院 | 少妇人妻真实偷人精品视频 | 美乳人妻一区二区三区 | 日韩的一区二区 | 日日噜噜噜夜夜爽爽狠狠 | 在线看污视频 | 日本乱偷人妻中文字幕在线 | 久久婷婷精品 | 久热精品在线视频 | 日韩一区二区三区在线看 | 在线射| 国产乱码精品一区二区 | 尤物精品视频 | 艳妇乳肉豪妇荡乳xxx | 日本a级在线 | 黄色三级小说 | 亚洲天堂区 | 狠狠干狠狠艹 | 伊人av综合 | 亚洲美女性生活视频 | 乱人伦xxxx国语对白 | 久久久久这里只有精品 | 国产福利一区二区视频 | 日韩裸体视频 | 亚洲91网站| 一级片少妇 | 国产三级av在线 | 国产极品一区 | 91激情网 | 青青草原亚洲 | 日韩女优一区二区 | 中国在线观看视频高清免费 | 黄色av日韩 | 黄色一集片 | 久久精品无码一区 | 天天综合影院 | 久久久久成人片免费观看蜜芽 | 国产主播一区二区 | 僵尸叔叔在线观看国语高清免费观看 | 成年人免费av | 亚洲成人免费网站 | 欧美精品一区三区 | 狠狠躁夜夜躁人人爽天天高潮 | 黄色一级片欧美 | 国产精品成人网站 | 欧美视频免费在线观看 | 蜜臀一区二区三区 | 9999国产精品| 国产av人人夜夜澡人人爽麻豆 | 韩国视频一区二区三区 | 91抖音在线观看 | 91久精品 | 在线免费观看欧美大片 | 一区二区三区久久精品 | 欧美激情一区二区 | 性激情视频 | 久久久久久久穴 | 日本加勒比中文字幕 | 熟女高潮一区二区三区 | 偷拍第1页 | 久99久视频 | 国产成人aⅴ | 免费在线性爱视频 | 日本人妖在线 | 欧美日韩第一页 | 日韩精品一二三 | 中国妇女做爰视频 | 欧美乱轮视频 | 精品一级少妇久久久久久久 | 日韩视频网址 | www.激情.com | 国产精品激情偷乱一区二区∴ | 亚洲精品乱码久久久久久蜜桃动漫 | 激情五月激情 | 亚洲成人网在线观看 | 88福利视频 | 小妹色播 | 天天操操夜夜操操 | 一出一进一爽一粗一大视频 | 亚洲女人天堂网 | 97成人人妻一区二区三区 | 尤物在线视频观看 | 欧美性视频一区二区 | 四虎影视免费永久观看在线 | 97成人资源站 | 亚洲午夜片 | 午夜欧美视频 | 91av在线免费视频 | 热久久这里只有精品 | 久久永久免费 | 国产91国语对白在线 | av网站在线免费播放 |