Array.from()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 9ì.
Array.from() ì ì ë©ìëë ìí ê°ë¥ ëë ì ì¬ ë°°ì´ ê°ì²´ìì ìê² ë³µì¬ë ìë¡ì´ Array ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤.
ìëí´ ë³´ê¸°
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-
ë°°ì´ë¡ ë³íí ìí ê°ë¥ ëë ì ì¬ ë°°ì´ ê°ì²´ì ëë¤.
mapFnOptional-
ë°°ì´ì 모ë ììì ëí´ í¸ì¶í í¨ìì ëë¤. ì´ í¨ì를 ì ê³µíë©´ ë°°ì´ì ì¶ê°í 모ë ê°ì´ ì´ í¨ì를 íµí´ 먼ì ì ë¬ëê³ ,
mapFnì ë°í ê°ì´ ëì ë°°ì´ì ì¶ê°ë©ëë¤. ì´ í¨ìë ë¤ì ì¸ì를 ì¬ì©íì¬ í¸ì¶ë©ëë¤. thisArgOptional-
mapFnì¤í ììthisë¡ ì¬ì©í ê°ì ëë¤.
ë°í ê°
ìë¡ì´ Array ì¸ì¤í´ì¤ì
ëë¤.
ì¤ëª
ë¤ìê³¼ ê°ì ê²½ì°ì Array.from()ì ì¬ì©íë©´ Array를 ë§ë¤ ì ììµëë¤.
- ìí ê°ë¥ ê°ì²´(
Map,Setê³¼ ê°ì ê°ì²´)ì¸ ê²½ì°. ëë ê°ì²´ê° ìí ê°ë¥ì´ ìëë¼ë©´, - ì ì¬ ë°°ì´ ê°ì²´(
lengthìì±ê³¼ ì¸ë±ì±ë ììê° ìë ê°ì²´).
ìí ê°ë¥ì´ ìëê±°ë ì ì¬ ë°°ì´ì´ ìë ì¼ë° ê°ì²´ë¥¼ ë°°ì´ë¡ ë³ííë ¤ë©´(ìì± í¤, ê° ëë ëì 모ë ì´ê±°íì¬) Object.keys(), Object.values(), ëë Object.entries()를 ì¬ì©í´ì¼ í©ëë¤. ë¹ë기 ìí ê°ë¥ì ë°°ì´ë¡ ë³ííë ¤ë©´ Array.fromAsync()를 ì¬ì©í©ëë¤.
Array.from()ì í¬ì ë°°ì´ì ìì±íì§ ììµëë¤. arrayLike ê°ì²´ì ì¼ë¶ ì¸ë±ì¤ ìì±ì´ ëë½ë ê²½ì°, ì ë°°ì´ìì í´ë¹ ìì±ì undefinedê° ë©ëë¤.
Array.from()ìë ìì±ëë ë°°ì´ì ê° ììì ëí´ í¨ì를 ì¤íí ì ìë map()ê³¼ ë¹ì·í ì íì 매ê°ë³ì mapFnì´ ììµëë¤. ì¢ ë ëª
ííê² ì¤ëª
íìë©´, Array.from(obj, mapFn, thisArg)ë ì¤ê° ë°°ì´ì ìì±íì§ ìëë¤ë ì ê³¼ ë°°ì´ì´ ìì§ ìì± ì¤ì´ê¸° ë문ì ì ì²´ ë°°ì´ ìì´ ë ê°ì ì¸ì(element, index)ë§ ë°ëë¤ë ì ì ì ì¸íë©´ Array.from(obj).map(mapFn, thisArg)ê³¼ ëì¼í 결과를 ê°ì ¸ìµëë¤.
ì°¸ê³ :
ì´ ëìì íìí ë°°ì´ìì ë ì¤ìíë°, ì¤ê° ë°°ì´ìë ì ì í íìì ë§ê² ì린 ê°ì´ ìì´ì¼ í기 ë문ì
ëë¤. Array.from()ì TypedArray.from()ê³¼ ëì¼í ëìì íëë¡ êµ¬íëììµëë¤.
Array.from() ë©ìëë ë²ì© í©í 리 ë©ìëì
ëë¤. ì를 ë¤ì´, Arrayì íì í´ëì¤ê° from() ë©ìë를 ììíë ê²½ì°, ììë from() ë©ìëë Array ì¸ì¤í´ì¤ ëì íì í´ëì¤ì ì ì¸ì¤í´ì¤ë¥¼ ë°íí©ëë¤. ì¤ì ë¡ this ê°ì ì ë°°ì´ì 길ì´ë¥¼ ëíë´ë ë¨ì¼ ì¸ì를 ë°ë 모ë ìì±ì í¨ìê° ë ì ììµëë¤. ìí ê°ë¥ì´ arrayLikeë¡ ì ë¬ëë©´ ì¸ì ìì´ ìì±ìê° í¸ì¶ëê³ , ë°°ì´í ê°ì²´ê° ì ë¬ëë©´ ë°°ì´í ê°ì²´ì ì ê·íë length를 ì¬ì©íì¬ ìì±ìê° í¸ì¶ë©ëë¤. ìµì¢
lengthë ìíê° ìë£ëë©´ ë¤ì ì¤ì ë©ëë¤. this ê°ì´ ìì±ì í¨ìê° ìë ê²½ì°, ì¼ë° Array ìì±ìê° ëì ì¬ì©ë©ëë¤.
ìì
>Stringì¼ë¡ ë°°ì´ ë§ë¤ê¸°
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() ì¬ì©í기
// íì´í í¨ì를 map í¨ìë¡ ì¬ì©íì¬ ìì ì¡°ì
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)
// ìíì¤ ìì±ê¸° í¨ì (Clojure, PHP ë±ìì "range"ë¼ê³ ë í¨)
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 ë²ìì ì«ì ìì±
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() ë©ìëë ì ë°°ì´ì length를 ëíë´ë ë¨ì¼ ì¸ì를 ë°ìë¤ì´ë 모ë ìì±ì í¨ììì í¸ì¶í ì ììµëë¤.
function NotArray(len) {
console.log("NotArray called with length", len);
}
// ìí ê°ë¥
console.log(Array.from.call(NotArray, new Set(["foo", "bar", "baz"])));
// NotArrayë lengthê° undefinedì¸ ìíë¡ í¸ì¶ë©ëë¤.
// NotArray { '0': 'foo', '1': 'bar', '2': 'baz', length: 3 }
// ì ì¬ ë°°ì´
console.log(Array.from.call(NotArray, { length: 1, 0: "foo" }));
// NotArrayë lengthê° 1ì¸ ìíë¡ í¸ì¶ë©ëë¤.
// NotArray { '0': 'foo', length: 1 }
this ê°ì´ ìì±ìê° ìë ê²½ì°, ì¼ë° Array ê°ì²´ê° ë°íë©ëë¤.
console.log(Array.from.call({}, { length: 1, 0: "foo" })); // [ 'foo' ]
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.from> |