JavaScript concat()不能在结尾添加的原因?


用vuejs制作上拉加载新数据效果,今天遇到个特殊情况,

正常的情况在data中定义一个空数组 list:[]


this.list = this.list.concat(list);

在data中的list就会一在数组末端新增数据,console.log结果 4 5 6是下一页数据

[
{1},{2},{3},{4},{5},{6}
]

但是现在的情况是,他不在已有的数组中新增,console.log结果

[
0:{1},{2},{3},2:{4},{5},{6}
]


针对下面的评论补充问题
为什么会在list中新建一个呢???纳闷???

this.lis是vue的data中定义的空数组

list数据
图片描述

阅读 4k
2 个回答

数据结构的问题,你的list是个对象,不是数组。

let data = []
//方法一:按目前的数据结构去改,
let object = {4: {a: 4},5: { a: 5},6: {a: 6 } }
for (const key in object) {
    if (object.hasOwnProperty(key)) {
        const element = object[key];
        data = data.concat(element)
    }
}
//方法二:es6直接取对象的值
let list= Object.values(object)
data = data.concat(list)


//方法三:让后台给你传成数组!或者自己把对象转数组
let list=[{a:1},{a:2},{a:3}]
data = data.concat(list)
console.log(JSON.stringify(data));//[{"a":4},{"a":5},{"a":6},{"a":1},{"a":2},{"a":3}]
 

你这个list明显是个对象{}包起来的,没有concat方法

推荐问题