V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Midsmr
V2EX  ›  Node.js

请教各位 Node.js 大佬一个问题

  •  
  •   Midsmr · 2020-05-29 05:10:46 +08:00 · 4152 次点击
    这是一个创建于 1400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人入坑 PHP 不久

    js 方面很烂

    这次写开源练手时

    我遇到了个问题

    我想在遍历里面实:[1].k = [1].v,{{ k }}显示 v 的内容

    但是我属实不知道怎么赋值

    恳请大佬教一下

    response.data.result是一个数组,数组里面是对象

          let arr = response.data.result;
          arr.forEach(item => {
                let arr[item].k = arr[item].v;
          })
    
    
    第 1 条附言  ·  2020-05-29 15:32:52 +08:00

    谢谢各位大佬

    问题已经解决了

    感谢各位大佬的指教

    13 条回复    2020-07-02 04:12:38 +08:00
    gzlock
        1
    gzlock  
       2020-05-29 05:45:46 +08:00 via iPhone   ❤️ 1
    arr.foreach((item, index)=>{
    // arr[index].k = arr[index].v
    // 被你绕进去了,直接用 item 不就行了
    item.k = item.v
    }
    yukiloh
        2
    yukiloh  
       2020-05-29 07:44:37 +08:00
    你可能是不知道第二个参数可以是 index?
    DivineRapierH
        3
    DivineRapierH  
       2020-05-29 08:26:20 +08:00 via iPhone
    gauzung
        4
    gauzung  
       2020-05-29 08:43:48 +08:00
    arr.forEach(item => {}) //这里的 item 就是当前遍历到的数组成员,所以 arr[item],第二个 let 没有用
    arr.forEach((item,index)=>{arr[index].k=arr[index].v} // 带上第二个参数
    hitaoguo
        5
    hitaoguo  
       2020-05-29 08:51:23 +08:00
    可以查 forEach 语法,看看回调函数里面参数都是什么
    limars
        6
    limars  
       2020-05-29 09:22:27 +08:00 via iPhone
    为什么感觉你的需求就是重新生成一个新的一样的 result
    minglanyu
        7
    minglanyu  
       2020-05-29 10:29:28 +08:00
    这是 JavaScript 基础,跟 node 无关
    ```js
    arr.forEach((item)=>{
    item.k = item.v
    })
    ```

    既然没有用到 forEach 迭代 callback 里的第二第三个参数 index 和 array,不如直接更加简洁干脆的 for 。

    ```js
    for(let i = 0; i<arr.length; i++){
    arr[i].k = arr[i].v
    }
    ```

    for 循环比 forEach 做 break 和 return 方便一些。
    wunonglin
        8
    wunonglin  
       2020-05-29 10:36:12 +08:00   ❤️ 1
    ```js
    for (const item of arr){
    item.k = item.v
    }
    ```
    wednesdayco
        9
    wednesdayco  
       2020-05-29 11:39:28 +08:00
    看了看 我差点以为学习到新骚操作写成 let a.c = 1
    xingjue
        10
    xingjue  
       2020-05-29 13:35:25 +08:00
    php 真香
    Midsmr
        11
    Midsmr  
    OP
       2020-05-29 15:01:33 +08:00
    @gzlock 谢谢大佬,但是这样在 vue 里面不能以调用{{k}}这样显示 v,会报未定义的错
    Phariel
        12
    Phariel  
       2020-05-29 15:17:08 +08:00 via iPhone
    我不建议你在使用原有数据的 reference 直接修改原数据 你这么写习惯了 在有些地方会产生一些你想不到的问题

    请用 map 重新生成一份新数组
    njwangchuan
        13
    njwangchuan  
       2020-07-02 04:12:38 +08:00
    Javascript 数组遍历四大基本操作:

    foreach:返回值 undefined,常用于修改原数组的值,同步执行。
    map:返回值 Array,对原数组的每个元素做操做返回值组成的新数组,元素个数与原数组相等。
    filter:返回值 Array,对原数组的每个元素条件过滤,返回数组的元素个数小于等于原数组。
    reduce:返回值 Object,对原数组的每个元素累进计算,常用于计算数组元素的统计量(求和、平均值等)

    其中后三个函数一般不改变原数组的值,不管是面试还是实际开发,数组操作尽量不要用 for 循环。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5315 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:27 · PVG 16:27 · LAX 01:27 · JFK 04:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.