当前位置: 首页 > 知识库问答 >
问题:

Javascript数组长度始终为0

夔修伟
2023-03-14

我尝试将元素映射到[]以获得角度。但如果我检查了对象的长度,则始终为0。。

var objects = [];

this.get().subscribe(
  response => {
    for (var i = 0; i < response.length; i++) {
      objects.push(response[i]);
    }
  }
);
console.log(objects.length);

屏幕如果I控制台.log(对象)

我做错了什么?

共有3个答案

简学文
2023-03-14

您正在记录稍后设置的内容,因此预览将显示一个空数组,但您可以将其展开。

日志将显示项目现在的样子;而不是你记录它时的样子。

var arr = [];
console.log(arr);//shows [] but when you expand it it shows items
arr.push({name:'john'});

如果您想在记录对象时查看对象的值,并计划在记录后对其进行变异,那么您可以执行以下操作:

console.log(JSON.stringify(object,undefined,2);

您的objects.push(响应[i]);语句在回调中,该回调可能是在您的console.log(objects.length)之后调用的;您可以通过添加另一个日志来证明这一点:

var objects = [];

this.get().subscribe(
  response => {
    console.log('second log')
    for (var i = 0; i < response.length; i++) {
      objects.push(response[i]);
    }
  }
);
console.log("first log",objects.length);

如果您有一个值在稍后时间解析一次,那么您可以使用Promises,但看起来您订阅了一个可以解析多次的事件,因此您的响应仅在回调中可用。

齐英耀
2023-03-14

这是由于代码执行的异步性质。订阅方法接受回调,这是您用名为响应的参数编写的箭头函数。因此,回调不会立即执行,但会在一段时间后执行。但是,由于JS是异步的,它不会等待回调执行,而是会移动到代码的下一行,其中变量仍然是一个空数组。正如其他答案所建议的,您可以将控制台在回调函数内记录日志以记录期望值。

屠锦
2023-03-14

在订阅中获得响应之前,您正在执行console.log。只需在订阅中移动console.log

var objects = [];

this.get().subscribe(
  response => {
    for (var i = 0; i < response.length; i++) {
      objects.push(response[i]);
    }
    console.log(objects.length);
  }
);
 类似资料:
  • 我正在开发一个服务,它将使用HTTP Content-Type:application/octet-stream和Transfer-Encoding: chunked接收文件。 我能够让服务器获取请求DisableFormValueModelBinda和Request estSizeLimit。 但是当我去从Request.Body获取数据时,长度总是0。 在框架中,我将使用类似request.C

  • 本文向大家介绍javascript 数组的定义和数组的长度,包括了javascript 数组的定义和数组的长度的使用技巧和注意事项,需要的朋友参考一下 本文提供一款简单的js入门教程,这是一款js数组定义与数组长度实例教程,如果你正在学习js数组的话,我们这里告诉你如何定义数组以及增加数组与数组长度计算实例。 先来看看如何定义数组 或者数组直接量: 下面看一下,在数组后面增加一个元素 数组的长度

  • 问题内容: 该方法的Java文档 在返回说明中包括以下内容: 如果目录为空或过滤器未接受任何名称,则该数组为空。 我如何做类似的事情,并将String数组(或与此相关的任何其他数组)初始化为长度为0? 问题答案: 正如其他人所说, 确实会创建一个空数组。但是,关于数组有一件好事-数组的大小无法更改,因此您始终可以使用相同的空数组引用。因此,在您的代码中,您可以使用: 然后每次需要时就返回-无需每次

  • 问题内容: 我希望能够“快速”构建一个numpy数组,但我不知道该数组的大小。 例如,我想做这样的事情: 这将导致包含x的所有元素,这显然是一个简单的答案。我很好奇这是否可能? 问题答案: 构建一个Python列表并将其转换为Numpy数组。每个附加项需要O(1)的摊销时间+ O( n )才能转换为数组,总共需要O( n )。

  • 本文向大家介绍初始化一个长度为5的空数组的版本相关面试题,主要包含被问及初始化一个长度为5的空数组的版本时的应答技巧和注意事项,需要的朋友参考一下 初始化一个长度为5的空数组的版本 不初始化数组长度的版本

  • 下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!