如何从数组中删除值? JavaScript的

时间:2012-06-01 08:17:53

标签: javascript jquery arrays json

我创建了一个对象:

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 = "";

6 个答案:

答案 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 ] = '';
    });
});

使用forEachObject.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] = "";
    }
}

DEMO: http://jsfiddle.net/NfBqn/

答案 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] = "";
  });
});