needanothercoder 2024-09-25 05:16 采纳率: 42.9%
浏览 5

想实现数组排序,说我的数组没定义,如何修改代码?

如下代码,如下图错误提示,请高人指正。


// index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
Page({
  data: {
    isShowUserName: false,
    userInfo: null,
    textInputValue: "",
    openid: "",
    wordlist: 
    [{rand: 1,word: 'apple',meaning: '苹果',blank: '', status: 0},
     {rand: 3,word: 'banana',meaning: '香蕉',blank: '',status: 0 },
     {rand: 2,word: 'take care of',meaning: '照顾',blank: '',status: 0},
    ]
  },
  updateName: function (e) {
    let index = e.currentTarget.dataset.index; // 假设你在wxml中通过data-index绑定了数组的索引
    let newValue = e.detail.value; // e.detail.value是用户在input中输入的新值
    // 使用ES6的模板字符串来动态更新数组中的值
    this.setData({
      [`wordlist[${index}].blank`]: newValue // 这将更新指定索引位置的对象的name属性
    });
    if (this.data.wordlist[index].blank === this.data.wordlist[index].meaning) {
      console.log("完全相同!");
    }
  },
  compareFunc: function (a, b) {
    if (a.rand < b.rand) {
      return -1;
    } else if (a.rand > b.rand) {
      return 1;
    } else {
      return 0;
    }
  },
  myPaixu: function (e) {
  function compareFunc(a, b) {
    return a.rand - b.rand;
  }
// 对数组进行排序
wordlist.sort(compareFunc);
// 打印排序结果
console.log(wordlist);
  }
})

img

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-25 05:17
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你在代码中遇到的问题是尝试在全局作用域内直接访问 wordlist,但是 wordlist 是定义在 Page 对象内的 data 属性中的一个局部变量。所以你需要使用 this.data.wordlist 来访问它。下面是修改后的代码:

    // index.js
    const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
    
    Page({
      data: {
        isShowUserName: false,
        userInfo: null,
        textInputValue: "",
        openid: "",
        wordlist: [
          {rand: 1, word: 'apple', meaning: '苹果', blank: '', status: 0},
          {rand: 3, word: 'banana', meaning: '香蕉', blank: '', status: 0 },
          {rand: 2, word: 'take care of', meaning: '照顾', blank: '', status: 0},
        ]
      },
      updateName: function (e) {
        // ... (你的代码逻辑)
      },
      compareFunc: function (a, b) {
        // ... (你的代码逻辑)
      },
      myPaixu: function () { // 注意这里没有参数,并且调用内部的compareFunc时需要用到this关键字来访问wordlist和compareFunc方法
        this.wordlist.sort(this.compareFunc); // 使用this关键字来访问wordlist数组和compareFunc方法
        console.log(this.wordlist); // 同样使用this关键字来访问wordlist数组
      }
    })
    

    这样修改后,你的 myPaixu 函数就可以正确地访问到 wordlist 数组和 compareFunc 方法了。另外注意,由于你的排序函数已经定义在类的方法中,所以在 myPaixu 中可以直接使用 this.compareFunc 来调用排序函数,而不需要再定义一个新的函数来包裹它。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月25日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?