我创建了一个对象:
var savingArray = new Array({doctorId: "something", username: "something", password: "something", givenName: "something", familyName: "something", address: "something", zip:"something", emailAddress: "something", phoneNumber: "something", labs: "something", defaultLab: "something"});
现在我希望删除对象的每个值...我想最终使用savingArray:
savingArray == ({doctorId: "", username: "", password: "", givenName: "", familyName: "", address: "", zip:"", emailAddress: "", phoneNumber: "", labs: {}, defaultLab: ""});
所以我想要的是将所有值更改为“”dinamicaly ..
savingArray从来没有相同的对象,所以不能这样做:
savingArray[0].doctorId = "";
答案 0 :(得分:6)
for(var i = 0; i < savingArray.length; i++) {
var obj = savingArray[i];
for(var key in obj) {
obj[key] = '';
}
}
或者既然您正在使用jQuery,您也可以使用其$.each()
函数进行迭代:
$.each(savingArray, function(i, obj) {
$.each(obj, function(key, value) {
obj[key] = '';
});
});
如果某些内容被修改Object.prototype
(例如添加了一些方法 - 通常不应该这样做),您需要添加if(obj.hasOwnProperty(key))
检查并仅在检查成功时设置值
答案 1 :(得分:3)
savingArray.forEach( function( el ) {
Object.keys( el ).forEach( function( key ) {
el[ key ] = '';
});
});
使用forEach
和Object.keys
的自我解释代码。当然,这在IE6 / 7/8中不起作用。
答案 2 :(得分:1)
你在寻找吗?
for (var i = 0; i < savingArray.length; i++) {
for (var key in savingArray[i]) {
if (savingArray[i].hasOwnProperty(key))
savingArray[i][key] = "";
}
}
答案 3 :(得分:1)
$.each(savingArray, function(index, obj) {
$.each(obj, function(k, val) {
obj[k] = "";
});
});
<强> DEMO 强>
答案 4 :(得分:1)
JavaScript对象的属性可以被视为键值对,并且可以迭代对象,因此您需要做的是首先迭代数组中的对象
for(var i = 0;i < savingArray.length; i++) { ... }
然后迭代每个对象的属性。但是,您还需要测试属性和对象之间的关系。总而言之,你最终会得到这样的代码:
var i,prop,current;
//iterate over the objects in the array
for(i = 0;i<savingArray.length);i++){
current = savingArray[i];
//iterate over all the properties of the object
for(prop in current){
//test the relationship of the property and the object
if(current.hasOwnProperty(prop)){
//assign the empty string to the property
current[prop] = "";
}
}
}
或jQuery版本
$.each(savingArray, function(i, obj) {
$.each(obj, function(key) {
if(obj.hasOwnProperty(key)){
obj[key] = '';
}
});
});
我希望前者比jQuery更高效,但是由于更加浓缩,jQuery更容易阅读
答案 5 :(得分:1)
当您使用jQuery时,也可以使用它来循环数组和对象:
$.each(savingArray, function(i, item){
$.each(item, function(key){
item[key] = "";
});
});