如何在数组元素中添加数组

时间:2018-10-04 06:40:28

标签: javascript jquery

我有这样的_assignedTripData数组元素。

0: {id: 100959872, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}
1: {id: 100952759, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}
2: {id: 100952761, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}
3: {id: 100952766, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}

但是当我使用_assignedTripData.splice(0,1)在0位置拼接元素并存储到var newArray = new Array();中时之后,我想使用_assignedTripData.splice(0,0,newArray)在同一位置插入相同记录,最终输出将为

为什么只是看到数组的0索引是对象呢?

0: [{…}]
1: {id: 100952759, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}
2: {id: 100952761, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}
3: {id: 100952766, cityCode: "PHX", airportID: "PHX", local: 0, guestID: 0, …}

在0位置添加数组对象是因为当我将_assignedTripData数据绑定到tboday的第一条记录未定义显示时,就会添加对象。

我的问题是如何在“ x”位置删除数组并将其添加到同一位置,以使数组对象结构不变。回复任何建议。 我是Jquery的新手。

2 个答案:

答案 0 :(得分:2)

docs Array.splice 返回

  

包含删除的元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

因此,您需要使用Spread Syntax才能获得所需的结果。

let arr = [1,2];
let v = arr.splice(0,1);
arr.splice(0,0, ...v);
console.log(arr);

答案 1 :(得分:0)

我最初的想法是,如果您只是要替换相同位置的元素,请直接覆盖

const m = ['a','b','c']

// replace 2nd element directly
m[1] = 'z'

console.log(m)

如果您不知道是否要插入某些内容,则必须跟踪这些位置

let m = ['a','b','c']
const insertionPoints = []

// remove 2nd element
idxToRemove = 1
m.splice(idxToRemove, 1)
console.log(m) // proof that 2nd element removed

// track that you removed the 2nd element
insertionPoints.push(idxToRemove)


/* at some point in the future... */


// insert at old pos
locationToInsert = insertionPoints.pop()
thingIWantInserted = 'z'
m.splice(locationToInsert, 0, thingIWantInserted)

console.log(m) // show updated

干杯