gpt4 book ai didi

javascript - 当未设置限制时,动态数组切片以限制长度

转载 作者:太空宇宙 更新时间:2023-11-04 15:43:42 25 4
gpt4 key购买 nike

我有课

function Thing (n) {
this.limit = n // null or int n
this.table = [1, 2, 3, 4]
}

我想这样做是为了美观

Thing.prototype.test = function () {
let that = this;
return this.table
.slice(0, that.limit) // this line
.map() // etc
}

因为上面是简化的代码,实际的 table 是另一个类的实例,并且在 slice() 之前有另一个实例方法和一个对其调用的 map()。

所以我想知道是否有一种方法可以强制切片切片到 Thing.limit (如果存在),否则切片并返回整个数组。 (在最后一个 map() 之前,数组很小)。类似的东西

Thing.prototype.test = function () {
let that = this;
return this.table
.slice(0, (that.limit == null) ? this.length : that.limit)
.map() // etc
}

这不起作用,我收到错误

ReferenceError: that is not defined

顺便问一下,slice() 中的 this 上下文是什么?这是一个愚蠢的问题吗?

注意 this.table.slice(0, -1) => [1, 2, 3]this.table.slice(0, 0) => [].

我愿意更改 Thing.limit 的保存方式,这主要是因为我现在很好奇,因为我已经将函数更改为仅 slice如果 this.plan.limit 存在 && > this.table.length。

<小时/>

实例化类的代码是

const gadget = new Gadget();
const query = new Thing(gadget);
const result = query.get();

可能相关:在实际代码中,在query.get()内部,有另一个名为getRowIds的函数,它在slice()之前被调用,然后是一个非常基本的map()。

错误发生在slice()

最佳答案

undefined 与切片的第二个参数一起使用将为您提供所需的行为。如果您出于某种原因接受 0 作为限制,如果有空表是一件事情,那么您可以使用它。

function Thing (n) {
this.limit = n; // undefined or int
this.table = [1, 2, 3, 4]
}


Thing.prototype.test = function () {
return this.table
.slice(0, this.limit)
.map() // etc
}
<小时/>

现在小心实例化,我看到您将 Gadget 的实例而不是数字传递给 Thing 构造函数,因此这可能与您的行为不同期待。

关于javascript - 当未设置限制时,动态数组切片以限制长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com