我有一个数组。
var tableHeader = [
{
key: 1,
value: 'inputname',
defaultChecked: true,
columnName: 'input.name',
}, {
key: 3,
value: 'callname',
defaultChecked: true,
columnName: 'call.name',
}, {
key: 4,
value: 'rank',
defaultChecked: true,
columnName: 'call.rank',
}, {
key: 5,
value: 'threshold',
defaultChecked: true,
columnName: 'call.threshold',
}, {
key: 9,
value: 'matchname',
defaultChecked: true,
columnName: 'match.name',
},
]
我的要求:我将删除具有键3的对象。虽然我将同一个对象推送到数组,但它将推送到与之前相同的位置。如果我做其他对象,也会发生同样的情况。
答案 0 :(得分:2)
我刚尝试使用Typescript我不知道它对你有多大帮助,我在删除的对象位置添加了空字符串,之后我用原始对象替换了
let removedObj, removedIndex: any;
this.tableHeader.forEach((ele, i) => {
if (ele.key == 3) {
removedObj = ele; removedIndex = i;
this.tableHeader.splice(i, 1, '');
}
});
this.tableHeader.splice(removedIndex, 1, removedObj);
console.log(this.tableHeader);
答案 1 :(得分:1)
这看起来像两个不同的问题,一个是通过其属性过滤掉数组内的元素,第二个(如果它具有相同的键,则将新元素推回到相同的位置稍微棘手)。我认为你最好的选择是单独留下.push,而是在添加新元素(恢复顺序)后查看Array.filter和Array.sort,如下所示:
var tableHeader = [{
key: 1,
value: 'inputname',
defaultChecked: true,
columnName: 'input.name',
}, {
key: 3,
value: 'callname',
defaultChecked: true,
columnName: 'call.name',
}, {
key: 4,
value: 'rank',
defaultChecked: true,
columnName: 'call.rank',
}, {
key: 5,
value: 'threshold',
defaultChecked: true,
columnName: 'call.threshold',
}, {
key: 9,
value: 'matchname',
defaultChecked: true,
columnName: 'match.name',
}, ]
console.log('Original', tableHeader)
//Filter out {key:3}
tableHeader = tableHeader.filter(function(e) {
return e.key !== 3
})
console.log('Filtered', tableHeader)
tableHeader.push({
key: 3,
value: 'callname',
defaultChecked: true,
columnName: 'call.name',
})
tableHeader.sort(function(a, b) {
return a.key - b.key
})
console.log('Resorted', tableHeader)
答案 2 :(得分:0)
替换数组元素使用:
TheNewObject = { key: 9,
value: 'matchname',
defaultChecked: true,
columnName: 'match.name',};
tableHeader[3] = TheNewObject;
就像那样,
要搜索对象索引,您可以使用以下方法:
function getObjectIndex(skey)
{
for (i = 0; i < tableHeader.length; i++) {
obj = tableHeader[i];
if (obj.hasOwnProperty('key') && obj.key == skey) {
return i;
}
}
}