请问这是数组吗?是数组为啥length为0

     var arr1 = [
            {name: "fcf294131", key: "处理进度", value: "等待处理"},
            {name: "fcf294131", key: "处理进度", value: "正在处理"},
            {name: "fcf294131", key: "处理进度", value: "等待处理"},
            {name: "fcf294131", key: "处理进度", value: "完成"},
            {name: "fcf294131", key: "处理进度", value: "等待处理"}
        ];
        var arr2 = arr1.reduce((all,a)=>{
    if(all[a.value]){
        all[a.value]++
    }else {
        all[a.value]=1
    }
    return all;

},[]);
console.log(arr2);//[等待处理: 3, 正在处理: 1, 完成: 1]
请问这是数组吗?
如何变为这样


  [
        {key:"等待处理",len:3},
        {key:"正在处理",len:1},
        {key:"完成",len:1}
    ]
阅读 2.3k
3 个回答

是数组,数组是可以添加key值不为number类型的属性的,但是不计入length计算内。
要想遍历的话,可以通过Object.keys(arr2).forEach(key => {console.log(arr2[key])})来做到。

arr2 = Object.values(arr2)

arr2 instanceof Array // true
数组的length是按最大的数字索引来的,你这里又没数字索引。
而且数组本身也是对象,是可以添加非数字的key-value对的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题