【发布时间】:2019-08-15 13:15:33
【问题描述】:
请帮我弄清楚 Array concat() 方法并编写纯 Javascript 代码。 这是ECMA-262标准的代码
- 让 O 成为? ToObject(此值)。
- 让 A 成为? ArraySpeciesCreate(O, 0)。
- 设 n 为 0。
- 让 items 是一个 List,其第一个元素为 O,其后续元素 是,按从左到右的顺序, 传递给此函数调用的参数。
-
重复,但项目不为空
一个。从 items 中删除第一个元素,并让 E 成为元素的值。
b.让可传播的吗? IsConcatSpreadable(E)。
c。如果spreadable为真,那么
i. Let k be 0. ii. Let len be ? ToLength(? Get(E, "length" "length")). iii. If n + len > 253-1, throw a TypeError exception. iv. Repeat, while k < len 1. Let P be ! ToString(k). 2. Let exists be ? HasProperty(E, P). 3. If exists is true, then a. Let subElement be ? Get(E, P). b. Perform ? CreateDataPropertyOrThrow(A, ! ToString(n), subElement). 4. Increase n by 1. 5. Increase k by 1.d。否则 E 将作为单个项目添加而不是展开,
i. If n≥253-1, throw a TypeError exception. ii. Perform ? CreateDataPropertyOrThrow(A, ! ToString(n), E). iii. Increase n by 1. - 执行? Set(A, "length" "length", n, true)。
- 返回 A。
我想要这样的代码。
Array.prototype.con = function(){
let 0 = ;
let A = ;
let n = 0;
let item = ;
so on...
}
让 arr1 = [1,2];
让 arr2 = [3,4];
arr1.con(arr2) //像concat()一样接收效果
【问题讨论】:
-
我不明白你的问题
-
我想创建我自己的方法,它会像 concat() 方法一样工作,我也想了解 concat() 方法在标准下是如何工作的。
-
您似乎拥有 ECMA-262 标准的所有步骤。尝试将这些转换为代码,看看会发生什么。
-
DTul 请帮我转换一下。
-
@Vigen Stackoverflow 不是人们只为您编写代码的地方。自己尝试一下,如果遇到问题,请提出具体问题。 How to ask
标签: javascript