【问题标题】:Function returns proxy instead of object in JSJS中的函数返回代理而不是对象
【发布时间】:2021-11-19 10:48:40
【问题描述】:

我有一个数组:const arr = ['one', 'two', 'three']

我有一个函数,它接受一个字符串数组并返回一个对象数组:

const func = (arr) => arr.map(item => ({str: item}));

由于某种原因,当我调用此函数并打印结果时,我得到一个 proxy 对象数组而不是普通对象..

// call and print
const arr = ['one', 'two', 'three'];
const res = func(arr);
console.log(res);

// console result
(3) [{...}, {...}, {...}]
0: proxy {str: 'one'}
1: proxy {str: 'two'}
2: proxy {str: 'three'}

问题是,只有当我在 func 函数中使用 return 时才会发生这种情况,因为当我在 func 中打印映射数组而不使用 return 语句时,我会得到预期的结果:

(3) [{...}, {...}, {...}]
0: {str: 'one'}
1: {str: 'two'}
2: {str: 'three'}

注意:我将 react.js 与 next.js 一起使用,并从另一个文件导入 func

【问题讨论】:

  • 我的浏览器和我的节点都没有这样做。你在用什么运行它?
  • @AndreyTyukin 用下一个反应应用程序
  • 我的意思是:您使用的是什么运行时环境?由于您已包含输出中的数字,因此它看起来不像节点的输出。 React 和 Next 是一些似乎与您的问题没有任何关系的框架。
  • @AndreyTyukin 节点
  • 节点在服务器端直接打印0:1:2:到控制台,没有任何中介?那么您能否更改您的代码以使用console.log(process.version, res) 记录节点版本,并告诉我们输出是什么?我不知何故有这样的印象,节点和您在上面复制粘贴的输出之间必须有某种中介。

标签: javascript reactjs json next.js


【解决方案1】:

我检查了您的代码,发现问题是在arrow function 上返回。您可以尝试以下功能:

const func = (arr) => arr.map(item => ({str: item}));

或者

const func = (arr) => {
  return arr.map(item => ({str: item}))
};

我在下面的演示中使用它:

const func = (arr) => arr.map(item => ({str: item}));

// call and print
const arr = ['one', 'two', 'three'];
const res = func(arr);
console.log(res);

【讨论】:

  • 这里是一个错误,不是在原始代码中。见编辑。
  • @user12499410 The thing is that it's only happening if I use return inside the func function -> func 已修复,那么您现在有什么问题?
  • 是的,如果我不返回任何东西,只是在 func 函数中打印结果,那么它就是正常的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多