js中如何以最简单的方式将数组元素添加到对象中?


如题,通常做法就是循环数组,最后在添加length属性,如:

   
  var obj = {};
  
var pushArr = [11,22,33,44,55,66];
for(var i=0;i<pushArr.length;i++) {
obj[i] = pushArr[i];
}
obj.length = pushArr.length;

console.log(obj); //{0:11,1:22,2:33,3:44,4:55,5:66,length:6}

如何不用循环更简单的实现上边的效果? 将一个数组添加到obj中。

趣味 JavaScript

小半碗拉面 12 years, 7 months ago

我自己回答下吧,js将数组元素添加到对象中(或 数组转换成对象)有个小技巧:

   
  var obj = {};
  
[].push.apply(obj,[11,22,33,44,55,66]);

console.log(obj); //{0:11,1:22,2:33,3:44,4:55,5:66,length:6}

由于obj是个对象没有像数组的push()方法,所以利用数组的push()以及apply()的特性来将数组作用于push()并修改当前的引用。 有较严重的代码洁癖的患者可以使用这个方法。

飞翔的寂寞 answered 12 years, 7 months ago

Your Answer