首页 > 解决方案 > 切片未定义(在循环中对 Array 中的字符串进行切片时)

问题描述

我偶然发现了一些我无法理解的东西。在循环中对 Array 中的字符串进行切片会产生"Cannot read property 'slice' of undefined"错误。当我自己切片任何 Array 字符串(没有循环)时,它工作正常。请帮我调试代码。

var Arr = ['2018-08-03 11:00:00', '2017-07-03 03:30:00'];
console.log('length of Arr: ', Arr.length);
console.log('string testing: ', Arr[0]);

var testing = Arr[0].slice(0,-3);
console.log('slice testing :', testing);

var chunks = [];

for (var i = 0; i<=Arr.length; i++) {

  chunks.push(Arr[i].slice(0,-3));

};

console.log('chunks: ', chunks);

标签: javascriptarraysslice

解决方案


您正在使用不正确i<=Arr.lengthfor循环条件。这是不正确的,因为当我们有时,如果值在循环中为真,那么 的长度Arr就是如此。因此,当代码执行时,它无法在第三个索引中找到任何元素(因为 Arr[2] 表示第三个索引中的项目),因此它给出了该错误:2i2fori<=Arr.lengthArr[i]Arr[2]undefined

var Arr = ['2018-08-03 11:00:00', '2017-07-03 03:30:00'];
console.log('length of Arr: ', Arr.length);
console.log('string testing: ', Arr[0]);

var testing = Arr[0].slice(0,-3);
console.log('slice testing :', testing);

var chunks = [];

for (var i = 0; i<Arr.length; i++) {

  chunks.push(Arr[i].slice(0,-3));

};

console.log('chunks: ', chunks);


推荐阅读