数组方法:array.at()

JavaScript 数组的索引是从0开始的,第一个元素的索引为0,最后一个元素的索引等于该数组的长度减1。

  1. 我们一般使用方括号通过索引访问数组元素:array[index],如果指定的索引是一个无效值,JavaScript 数组并不会报错,而是会返回 undefined。

    const array = ['张三','李四','王麻子'];
    console.log(array[0])  //张三
    console.log(array[1])  //李四
    console.log(array[3])  // 当前不存在索引为3 undefined
    console.log(array[array.length - 1])  //王麻子  获取数组最后一个元素
    
  2. 数组提供了一个新的方法来访问数组元素:array.prototype.at()
    at() 方法接收一个整数值并返回该索引的项目,允许正数和负数。负整数从数组中的最后一个项目开始倒数。

    const array = ['张三','李四','王麻子'];
    console.log(array.at(0))  //张三
    console.log(array.at(-1)) //王麻子   获取最后一个元素
    console.log(array.at(-2)) //李四
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) const db = cloud.database() const _ = db.command exports.main = async (event, context) => { console.log(event) const usersID = event.usersID; const usersIDres = await db.collection('usersdatas').where({_id: usersID}).get() const threepartysid = usersIDres.data[0].threepartysid const allid = await db.collection('usersinternet').where({_id: _.in(threepartysid) }) .orderBy('isGroupRegister','desc') .orderBy('isGroupMember','desc') .orderBy('startdate','desc') .orderBy('closedate','desc') .skip(event.length) .limit(event.limit) .get() return allid; 报错信息是:TypeError: Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a Symbol.iterator method. at _nonIterableSpread (<anonymous>:1:840) at _toConsumableArray (<anonymous>:1:1129) at di._callee2$ (plugManages.js:67) at L (regenerator.js:1) at Generator._invoke (regenerator.js:1) at Generator.t.<computed> [as next] (regenerator.js:1) at asyncGeneratorStep (asyncToGenerator.js:1) at c (asyncToGenerator.js:1)(env: macOS,mp,1.06.2303220; lib: 2.31.1。你能修复问题并把正确代码发给我吗?下面是小程序端代码getMyExtensionLibrary: async function () { let res = await wx.cloud.callFunction({ name: 'getMyExtensionLibrary', data: { usersID: this.openid, length: this.data.list.length, limit: this.data.limit } }) console.log(res.result) this.data.list = [...this.data.list, ...res.result] this.data.list.filter((v, i, a) => { let index = a.findIndex(u => u._id == v._id) return index == i }) this.setData({ list: this.data.list, isEnd: res.result.length < this.data.limit ? true : false , }) },。请你两段代码结合起来详细指出问题以及原因,把正确的代码发给我
05-25
问题出在以下代码段中: ``` const allid = await db.collection('usersinternet').where({_id: _.in(threepartysid) }) .orderBy('isGroupRegister','desc') .orderBy('isGroupMember','desc') .orderBy('startdate','desc') .orderBy('closedate','desc') .skip(event.length) .limit(event.limit) .get() return allid; ``` `allid` 是一个由 `get()` 方法返回的对象,而不是一个数组。因此,你不能像数组一样使用展开运算符 `...`,因为这个对象没有实现迭代器接口。替代方案是使用 `concat` 方法将两个数组连接起来。 以下是修复后的代码: ``` const allidRes = await db.collection('usersinternet').where({_id: _.in(threepartysid) }) .orderBy('isGroupRegister','desc') .orderBy('isGroupMember','desc') .orderBy('startdate','desc') .orderBy('closedate','desc') .skip(event.length) .limit(event.limit) .get() const allid = allidRes.data return allid; ``` 在上面的代码中,我们将 `get()` 方法返回的对象赋值给 `allidRes`,然后使用 `allidRes.data` 访问实际数据的数组。最后将这个数组作为函数的返回值。在小程序端代码中,由于 `list` 是一个数组,我们可以使用 `concat` 方法将两个数组连接起来。 以下是修复后的小程序端代码: ``` getMyExtensionLibrary: async function () { let res = await wx.cloud.callFunction({ name: 'getMyExtensionLibrary', data: { usersID: this.openid, length: this.data.list.length, limit: this.data.limit } }) console.log(res.result) this.data.list = this.data.list.concat(res.result) this.data.list.filter((v, i, a) => { let index = a.findIndex(u => u._id == v._id) return index == i }) this.setData({ list: this.data.list, isEnd: res.result.length < this.data.limit ? true : false , }) }, ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值