我有这样的_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的新手。
答案 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
干杯