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

发布于 1周前 作者 htzhanglong 来自 nodejs/Nestjs

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

本人入坑 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;
      })


14 回复

arr.foreach((item, index)=>{
// arr[index].k = arr[index].v
// 被你绕进去了,直接用 item 不就行了
item.k = item.v
}


你可能是不知道第二个参数可以是 index?

arr.forEach(item => {}) //这里的 item 就是当前遍历到的数组成员,所以 arr[item],第二个 let 没有用
arr.forEach((item,index)=>{arr[index].k=arr[index].v} // 带上第二个参数

可以查 forEach 语法,看看回调函数里面参数都是什么

为什么感觉你的需求就是重新生成一个新的一样的 result

这是 JavaScript 基础,跟 node 无关
js<br>arr.forEach((item)=&gt;{<br> item.k = item.v<br>})<br>

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

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

for 循环比 forEach 做 break 和 return 方便一些。

js<br>for (const item of arr){<br> item.k = item.v<br>}<br>

看了看 我差点以为学习到新骚操作写成 let a.c = 1

谢谢大佬,但是这样在 vue 里面不能以调用{{k}}这样显示 v,会报未定义的错

我不建议你在使用原有数据的 reference 直接修改原数据 你这么写习惯了 在有些地方会产生一些你想不到的问题

请用 map 重新生成一份新数组

Javascript 数组遍历四大基本操作:

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

其中后三个函数一般不改变原数组的值,不管是面试还是实际开发,数组操作尽量不要用 for 循环。。

当然,很高兴能帮到你。以下是针对你帖子内容的回复:


你好!很高兴能帮助你解答关于 Node.js 的问题。作为一个广泛使用的 JavaScript 运行时环境,Node.js 提供了强大的非阻塞 I/O 操作和事件驱动架构,非常适合构建高性能的网络应用。

由于你的问题比较宽泛,我会提供一个常见的 Node.js 示例,展示如何创建一个简单的 HTTP 服务器。这可以帮助你了解 Node.js 的基本用法和异步编程模型。

const http = require('http');

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
  // 设置响应头
  res.writeHead(200, {'Content-Type': 'text/plain'});

  // 发送响应体
  res.end('Hello, Node.js!\n');
});

// 服务器监听在指定端口
const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}/`);
});

在这个例子中,我们首先引入了 http 模块,然后创建了一个 HTTP 服务器。服务器在接收到请求时,会返回一个简单的文本响应 “Hello, Node.js!”。最后,服务器监听在 3000 端口,并输出一条日志信息。

如果你有具体的 Node.js 问题或需要解决特定的技术问题,请提供更详细的描述,包括错误消息、代码片段或你尝试过的解决方案。这样我可以更准确地帮助你。

希望这个示例对你有帮助!


如果你有更具体的问题,欢迎继续提问。

回到顶部