请帮我弄清楚 Array concat() 方法并编写纯 Javascript 代码

Posted

技术标签:

【中文标题】请帮我弄清楚 Array concat() 方法并编写纯 Javascript 代码【英文标题】:Please help me to figure out Array concat() method and write pure Javascript code 【发布时间】:2019-08-15 13:15:33 【问题描述】:

。 这是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 *** 不是人们只为您编写代码的地方。自己尝试一下,如果遇到问题,请提出具体问题。 How to ask 【参考方案1】:

关于您在 cmets 中的问题。您可以通过在原型函数中调用 this 来访问项目。它指的是您正在调用的实际实例。

items = this;

Array.prototype.newTest = function(toBeAdded)
  console.log('this', this);
  console.log('To be Added', toBeAdded);


const arr = ['foo', 'bar'];

arr.newTest(['x','y']);

【讨论】:

以上是关于请帮我弄清楚 Array concat() 方法并编写纯 Javascript 代码的主要内容,如果未能解决你的问题,请参考以下文章

Apple 报告应用程序崩溃,但我无法弄清楚

有人可以帮我弄清楚我的查询是不是有误吗?

从 xlsm 复制并粘贴到 csv

BufferedImage为什么会这样?

iPhone NSUserDefaults

如何为 adHoc 用户测试 APNS?