所以这个问题可能在语法层面上有点基础,但我是javascript的新手并且还在解决问题。
所以我设置了一个如下所示的数组:
chainResidue = [ {cname : selectedId.ChainId, rnum: Numbed(selectedId.residueNumber}]
我将把它推到一个名为ballsAndSticksData = []
的单独数组中 像这样:ballsAndSticksData.push(picked);
我想检查该项目是否在列表中,如果是,请将其删除。
完整代码:
$('span').click(function() {
// Index the span element relative to the Div Class
var index = $(this).index();
var selectedId = chainResidue[index];
//Set up the picked structure **Note** Not every PDB file starts off at the index of 1
var picked = structure.select({
cname: selectedId.chainId,
rnum: Number(selectedId.residueNumber)
});
// Check if the span element is selected or not
if ($(this).hasClass('spanSelected')) {
$(this).removeClass('spanSelected');
$(this).addClass('spanUnselected');
//Function to remove an element in a list
var index = ballsAndSticksData.indexOf(picked);
alert (index);
if (index > -1) {
ballsAndSticksData.splice(index, 1);
}
console.log(ballsAndSticksData);
if ( ballsAndSticksData.length === 0 ) {
viewer.requestRedraw();
} else {
for (i = 0; i < ballsAndSticksData.length; i++) {
viewer.ballsAndSticks('ligand', ballsAndSticksData[i]);
}
}
}
else {
$(this).removeClass('spanUnselected');
$(this).addClass('spanSelected');
viewer.ballsAndSticks('ligand', picked);
ballsAndSticksData.push(picked);
console.log((ballsAndSticksData));
}
我尝试过的事情:
所以indexOf每次都为列表中的项返回-1,所以它必须是使用{}的东西,我认为是可以的。