我在jQuery中使用.data()函数来存储数组,如下所示:
var myArray = {};
myArray[0] = {};
myArray[0][0] = "test00";
myArray[0][1] = "test01";
myArray[1] = {};
myArray[1][0] = "test10";
myArray[1][1] = "test11";
$('#datastorage').data("testname". myArray);
我想从“testname”中删除一个项目(myArray [0])并保留其余项目。
以下不起作用:
$('#datastorage').removeData("testname").removeData(0);
我相信jQuery以普通对象的形式存储数组(测试$.isPlainObject()
返回true)
我现在正尝试使用函数.not()
删除元素...
答案 0 :(得分:3)
由于原始对象是一个数组,实际存储的只是对原始数据的引用,因此您所做的任何修改都会反映在对该数组的每个引用中,包括存储在{ {1}}。
所以你可以从数组中删除元素:
.data()
或者如果您想要更灵活地删除哪些元素,请使用$('#datastorage').data("testname").shift();
。
.splice()
或者如果您仍然可以访问$('#datastorage').data("testname").splice(0, 1);
:
myArray
没有必要将数组放回myArray.shift();
- 以上任何一项都会修改.data()
以及myArray
中已有的内容 - 他们是相同的阵列!。
如果数据是对象,则同样适用,但如果它是基本类型则不适用。
答案 1 :(得分:0)
你必须把阵列拿出来,从中移除,然后把它放回去。
var a = $('#datastorage').data('testname');
a.splice(0,1); // remove 1 item from position 0
$('#datastorage').data('testname', a);
答案 2 :(得分:0)
试试这段代码
var myArray = []; // myArray is an Array, not an object
myArray[0] = {};
myArray[0][0] = "test00";
myArray[0][1] = "test01";
myArray[1] = {};
myArray[1][0] = "test10";
myArray[1][1] = "test11";
$('#datastorage').data("testname", myArray);
console.log($('#datastorage').data("testname"));
$('#datastorage').data("testname", myArray.slice(1));
console.log($('#datastorage').data("testname"));