Baseline Widely available
Array.from()
éææ¹æ³ä»å¯è¿ä»£æç±»æ°ç»å¯¹è±¡å建ä¸ä¸ªæ°çæµ
æ·è´çæ°ç»å®ä¾ã
转æ¢å¼æ¥çå¯è¿ä»£å¯¹è±¡å°æ°ç»ï¼å¯ä»¥ä½¿ç¨ Array.fromAsync()
ã
console.log(Array.from("foo"));
// Expected output: Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], (x) => x + x));
// Expected output: Array [2, 4, 6]
è¯æ³
Array.from(arrayLike)
Array.from(arrayLike, mapFn)
Array.from(arrayLike, mapFn, thisArg)
åæ°
arrayLike
æ³è¦è½¬æ¢ææ°ç»çç±»æ°ç»æå¯è¿ä»£å¯¹è±¡ã
mapFn
å¯é
è°ç¨æ°ç»æ¯ä¸ªå
ç´ ç彿°ã妿æä¾ï¼æ¯ä¸ªå°è¦æ·»å å°æ°ç»ä¸çå¼é¦å
ä¼ä¼ éç»è¯¥å½æ°ï¼ç¶åå° mapFn
çè¿åå¼å¢å å°æ°ç»ä¸ã使ç¨ä»¥ä¸åæ°è°ç¨è¯¥å½æ°ï¼
element
æ°ç»å½åæ£å¨å¤ççå ç´ ã
index
æ°ç»å½åæ£å¨å¤ççå ç´ çç´¢å¼ã
thisArg
å¯é
æ§è¡ mapFn
æ¶ç¨ä½ this
çå¼ã
ä¸ä¸ªæ°çæ°ç»å®ä¾ã
æè¿°Array.from()
å¯ä»¥éè¿ä»¥ä¸æ¹å¼æ¥å建æ°ç»å¯¹è±¡ï¼
Map
å Set
对象ï¼ï¼æè
ï¼å¦æå¯¹è±¡æ¯ä¸å¯è¿ä»£çï¼length
屿§åç´¢å¼å
ç´ ç对象ï¼ãArray.from()
ç»ä¸ä¼å建ç¨çæ°ç»ã妿 arrayLike
对象缺å°ä¸äºç´¢å¼å±æ§ï¼é£ä¹è¿äºå±æ§å¨æ°æ°ç»ä¸å°æ¯ undefined
ã
Array.from()
æä¸ä¸ªå¯éçåæ° mapFn
ï¼è¯¥åæ°å
è®¸ä½ å¨å建æ°ç»æ¶ä¸ºæ¯ä¸ªå
ç´ æ§è¡ä¸ä¸ªå½æ°ï¼ç±»ä¼¼äº map()
ãæ´æç¡®å°è¯´ï¼Array.from(obj, mapFn, thisArg)
å Array.from(obj).map(mapFn, thisArg)
å
·æç¸åçç»æï¼åªæ¯å®ä¸ä¼å建ä¸é´æ°ç»ï¼å¹¶ä¸ mapFn
ä»
æ¥åä¸¤ä¸ªåæ°ï¼element
ãindex
ï¼ï¼ä¸æ¥åæ°ç»ï¼å 为æ°ç»ä»ç¶å¨æå»ºä¸ã
夿³¨ï¼ æ¤è¡ä¸ºå¯¹äºç±»ååæ°ç»æ´ä¸ºéè¦ï¼å 为ä¸é´æ°ç»çå¼å¿
é¡»è¢«æªæï¼ä»¥éåºç¸åºçç±»åãArray.from()
çå®ç°ä¸ TypedArray.from()
å
·æç¸åçç¾åã
Array.from()
æ¹æ³æ¯ä¸ä¸ªéç¨ç工忹æ³ãä¾å¦ï¼å¦æä¸ä¸ªæ°ç»ç±»çåç±»ç»§æ¿ from()
æ¹æ³ï¼ç»§æ¿ç from()
æ¹æ³å°è¿åæ°çåç±»çå®ä¾ï¼è䏿¯æ°ç»çå®ä¾ãäºå®ä¸ï¼this
å¼å¯ä»¥æ¯ä»»æçæé 彿°ï¼åªè¦è¯¥æé 彿°æ¥åä¸ä¸ªè¡¨ç¤ºæ°æ°ç»é¿åº¦çåä¸ªåæ°ãå½ä¸ä¸ªè¿ä»£å¨å¯¹è±¡ä½ä¸ºç±»æ°ç»ä¼ éæ¶ï¼ä¸å¸¦åæ°è°ç¨æé 彿°ï¼å½ä¼ éç±»æ°ç»å¯¹è±¡æ¶ï¼å°æºå¸¦ç±»æ°ç»å¯¹è±¡çè§èåé¿åº¦è°ç¨æé 彿°ãè¿ä»£å®ææ¶ï¼å°å次设置æç»ç length
ã妿 this
å¼å¹¶ä¸æ¯æé 彿°ï¼åä½¿ç¨ Array
æé 彿°ã
Array.from("foo");
// [ "f", "o", "o" ]
ä» Set æå»ºæ°ç»
const set = new Set(["foo", "bar", "baz", "foo"]);
Array.from(set);
// [ "foo", "bar", "baz" ]
ä» Map æå»ºæ°ç»
const map = new Map([
[1, 2],
[2, 4],
[4, 8],
]);
Array.from(map);
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map([
["1", "a"],
["2", "b"],
]);
Array.from(mapper.values());
// ['a', 'b'];
Array.from(mapper.keys());
// ['1', '2'];
ä» NodeList æå»ºæ°ç»
// æ ¹æ® DOM å
ç´ ç屿§å建ä¸ä¸ªæ°ç»
const images = document.querySelectorAll("img");
const sources = Array.from(images, (image) => image.src);
const insecureSources = sources.filter((link) => link.startsWith("http://"));
ä»ç±»æ°ç»å¯¹è±¡æå»ºæ°ç»ï¼argumentsï¼
function f() {
return Array.from(arguments);
}
f(1, 2, 3);
// [ 1, 2, 3 ]
使ç¨ç®å¤´å½æ°å Array.from()
// 使ç¨ç®å¤´å½æ°ä½ä¸ºæ å°å½æ°å»æä½å¤ä¸ªå
ç´
Array.from([1, 2, 3], (x) => x + x);
// [2, 4, 6]
// çæä¸ä¸ªæ°ååºåãå 为æ°ç»å¨æ¯ä¸ªä½ç½®é½ä½¿ç¨ `undefined` åå§åï¼ä¸é¢ç `v` å¼å°æ¯ `undefined`
Array.from({ length: 5 }, (v, i) => i);
// [0, 1, 2, 3, 4]
åºåçæå¨ï¼rangeï¼
// åºåçæå¨å½æ°ï¼é常称为ârangeâï¼ä¾å¦ ClojureãPHP çï¼
const range = (start, stop, step) =>
Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);
// çæçæ°åèå´ 0..4
range(0, 4, 1);
// [0, 1, 2, 3, 4]
// çæçæ°åèå´ 1..10ï¼æ¥é¿ä¸º 2
range(1, 10, 2);
// [1, 3, 5, 7, 9]
// ä½¿ç¨ Array.from çæåæ¯è¡¨ï¼å¹¶å°å
¶åºåæåº
range("A".charCodeAt(0), "Z".charCodeAt(0), 1).map((x) =>
String.fromCharCode(x),
);
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
å¨éæ°ç»æé 彿°ä¸è°ç¨ from()
from()
æ¹æ³å¯ä»¥å¨ä»»ä½æé 彿°ä¸è°ç¨ï¼åªè¦è¯¥æé 彿°æ¥åä¸ä¸ªè¡¨ç¤ºæ°æ°ç»é¿åº¦çåä¸ªåæ°ã
function NotArray(len) {
console.log("NotArray called with length", len);
}
// å¯è¿ä»£å¯¹è±¡
console.log(Array.from.call(NotArray, new Set(["foo", "bar", "baz"])));
// NotArray called with length undefined
// NotArray { '0': 'foo', '1': 'bar', '2': 'baz', length: 3 }
// ç±»æ°ç»å¯¹è±¡
console.log(Array.from.call(NotArray, { length: 1, 0: "foo" }));
// NotArray called with length 1
// NotArray { '0': 'foo', length: 1 }
å½ this
å¼ä¸æ¯æé 彿°ï¼è¿åä¸ä¸ªæ®éçæ°ç»å¯¹è±¡ã
console.log(Array.from.call({}, { length: 1, 0: "foo" })); // [ 'foo' ]
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4