如何从数组中删除值?javascript

如何从数组中删除值?javascript,javascript,jquery,arrays,json,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",

我这样创建一个对象:

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"});
现在,我希望删除对象的所有值…我希望以Savingaray结束,这样:

savingArray == ({doctorId: "", username: "", password: "", givenName: "", familyName: "", address: "", zip:"", emailAddress: "", phoneNumber: "", labs: {}, defaultLab: ""});
所以我只想把所有的值都改成“dinamicaly”

savingArray从来没有相同的对象,因此a不能这样做:

savingArray[0].doctorId = "";
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] = "";
     } 
  }
}

那是你要找的吗

for (var i = 0; i < savingArray.length; i++) {
    for (var key in savingArray[i]) {
        if (savingArray[i].hasOwnProperty(key))
            savingArray[i][key] = "";
    }
}
for(变量i=0;i
演示:

如果某个对象被修改了
Object.prototype
(例如,向其添加了方法-通常不应该这样做的事情),则需要添加
if(obj.hasOwnProperty(key))
检查,并且仅在检查成功时设置值

$.each(savingArray, function(index, obj) {
  $.each(obj, function(k, val) {
     obj[k] = "";
  });
});

可以将JavaScript对象的属性视为键值对,并且可以迭代对象,因此您需要做的是首先迭代数组中的对象

for(var i = 0;i < savingArray.length; i++)  { ... }
我希望前面的jQuery比jQuery性能更好,但由于更加精简,jQuery更易于阅读

savingArray.forEach( function( el ) {
    Object.keys( el ).forEach( function( key ) {
        el[ key ] = '';
    });
});

使用
forEach
Object.keys
自解释代码。当然,这在IE6/7/8中不起作用。

在使用jQuery时,还可以将其用于循环数组和对象:

$.each(savingArray, function(i, item){
  $.each(item, function(key){
    item[key] = "";
  });
});

Fy,使用
[…]
而不是
新数组(…)
来创建数组更干净。在第二个代码块中,
()
应该是
[]
。当所有其他属性都是空字符串时,
labs
属性为什么会是空对象?请绝对肯定:您确实意识到您创建的数组只有一个条目,对吗?那个条目是一个上面有各种键的对象吗?数组中是否有其他条目?FWIW
$。each()
不使用
.hasOwnProperty()
True。但是在这里它很可能是不必要的。是的,我不再在我自己的代码中使用它了。人们仍然使用它,因为Crockford是这么说的,但除非你有与
Object.prototype
相匹配的代码,否则它是不必要的!如果你假设使用ES5,你应该使用
.forEach()
,而不是
.map()
-后者是在你返回一个新数组时使用的。我正在返回一个新数组:)这不是必需的,但两种方法都有效。@Alnitak我为你添加了一种forEach方法:-)@Alnitak嗯,我把它与“替换当前数组”混淆了,仅使用foreach编辑:)您的第一个代码不起作用-它确实在适当的位置修改了元素,但它还返回一个新的数组,该数组的格式不正确。由于您已经有了
obj
,我将使用
obj[k]=”而不是
savingArray[index][k]=”。保存不必要的查找。
$.each(savingArray, function(i, obj) {
    $.each(obj, function(key) {
        if(obj.hasOwnProperty(key)){
           obj[key] = '';
        }
    });
});
savingArray.forEach( function( el ) {
    Object.keys( el ).forEach( function( key ) {
        el[ key ] = '';
    });
});
$.each(savingArray, function(i, item){
  $.each(item, function(key){
    item[key] = "";
  });
});