为什么会有's concat结果中数组的总索引号
Why there's a total index number of arrays in concat result
var a = ['a', 'b', 'c']; var b = ['d', 'e', 'f']; var c = ['g', 'h', 'i']; var d = [a, b, c]; for (e in d) var f = d.concat(e); console.log(f); //[Array[3], Array[3], Array[3], "2"]
为什么里面有2?如何在结果出来之前删除2?(不改变结果(
"2"
是生成数组的length
属性。它包含在内,因为您使用for ... in
循环。如果您使用for (var i=0; i<d.length; i++) {...}
,它将不包括在内。请参见片段。无论如何,在我看来,您可以使用var f = d.slice()
简化整个encillada。
引用MDN:
数组索引只是具有整数名称的可枚举属性,在其他方面与常规Object属性相同。不能保证。。。in将按任何特定顺序返回索引,并返回所有可枚举属性,包括那些具有非整数名称的属性和继承的属性
因为迭代的顺序取决于实现,所以在数组上迭代可能不会以一致的顺序访问元素。因此,最好使用带有数字索引的for循环(或Array.prototype.forEach((或for。。。循环的(。
另请参阅。。。
var a = ['a', 'b', 'c'];
var b = ['d', 'e', 'f'];
var c = ['g', 'h', 'i'];
var d = [a, b, c];
var f = [];
for (var i=0; i < d.length; i+=1) {
f.push(d[i]);
}
document.querySelector("#result").textContent = JSON.stringify(f, null, " ");
<pre id="result"></pre>
好吧,基于其他答案,您现在知道了数组中为什么为"2"的原因。
我试图针对您的实际问题,我可能是假设性的,但是,您似乎想要连接3个数组。
如果我的理解是正确的,你可以试试
var a = ['a', 'b', 'c'];
var b = ['d', 'e', 'f'];
var c = ['g', 'h', 'i'];
var f = a.concat(b).concat(c);
console.log(f); // ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
这是因为您的concat操作,这里e是数组d中元素的索引,试试下面的代码,你会得到一个想法
var a = ['a', 'b', 'c'];
var b = ['d', 'e', 'f'];
var c = ['g', 'h', 'i'];
var d = [a, b, c];
var f ;
for (e in d){
console.log(e);
f = d.concat(e);
console.log(f);
}
console.log(f); //[Array[3], Array[3], Array[3], "2"]
不过,目前还不清楚你期望得到什么样的结果。
编辑1预期输出为d数组。正如你已经定义的二维数组d具有以上所有内容,没有必要将其合并。
console.log(d);
编辑2如果你用这个代码复制数组有办法绕过
var a = ['a', 'b', 'c'];
var b = ['d', 'e', 'f'];
var c = ['g', 'h', 'i'];
var d = [a, b, c];
var f = [];
for (e in d){
console.log(e);
f[e] = d[e];
console.log(f);
}
console.log(f); //[Array[3], Array[3], Array[3]]
以上代码将在数组f 中复制数组d
相关文章:
- 按最大值获取数组索引
- 删除和重用数组索引
- 警报数组索引和值
- .fadeIn .fadeOut 会导致数组索引出现奇怪的行为
- Javascript原型通用Enquries和通过数组索引分配Id
- 获取数组索引的值
- Javascript-将值与关联数组索引进行比较
- Javascript-在数组索引中循环的问题
- JavaScript - “规范化”数组索引
- 数组索引混淆
- 使用 Javascript/React.js 查找对象的数组索引
- 如何拆分数组索引
- 获取新推送元素的数组索引
- 在 javascript 中将数组索引作为参数传递
- 当对象本身存储在 JavaScript 的数组索引中时,如何打印对象的每个单独属性
- 如何使用数组索引序列
- ASP.NET/JavaScript:数组索引溢出:实体框架/LINQ
- 如何在分配给数组索引的对象上调用方法
- 使用铆钉访问数组索引.js
- 计算 Javascript 数组索引的出现次数