2013-07-01 29 views
2

这里是我的代码如何在javascript中删除数组对象项?

var array = [{ id: 1, name: 'test' }, { id: 2, name: 'test2' }]; 

我需要上述阵列像下面

[{ name: 'test' }, { name: 'test2' }] 

我用delete

array.forEach(function(arr, i) { 
    delete array[i].id; 
}); 
console.log(array); 

输出尝试作为

[ { id: 1, name: 'test' }, 
    { id: 2, name: 'test2'} ] 

改变但它不会删除id项目。如何删除数组对象项?

我在节点v0.8中使用这个。

+2

似乎工作正常:http://jsfiddle.net/AbdiasSoftware/fPJ2u/(?)在FF和Chrome中测试。没有身份证在我的控制台。 – K3N

+0

它似乎在萤火虫工作正常。 – mohkhan

+0

@ Ken-AbdiasSoftware它不在客户端,而是在服务器端使用节点** v0.8 **。 –

回答

2

id财产删除,因为可以证明:

for (var l in array[0]) { 
    if (array[0].hasOwnProperty(l)) { 
     console.log(array[0][l]); 
    } 
} 

jsFiddle

截图node.js输出:

screenshot http://testbed.nicon.nl/dump/nodejsdelx.png

+0

我在节点中使用这个,'id'没有被删除。 –

+0

我也在node.js中运行了它,循环只显示'test' – KooiInc

+0

查看节点输出的屏幕截图。 – KooiInc

0

嗯,这里是你的代码与jQuery 1.9.1和d它的工作好:http://jsfiddle.net/8GVQ9/

var array = [{ id: 1, name: 'test' }, { id: 2, name: 'test2' }]; 
array.forEach(function(arr, i) { 
    delete array[i].id; 
}); 
console.log(array); 

顺便说一句,你想删除的阵列 - 这是更好地了解你的对象“财产”标识。

+0

我在服务器中使用此节点v0.8,其中id不会删除。 –

0

您必须解析数组并构建新版本,然后将其替换。

var array = [{ id: 1, name: 'test' }, { id: 2, name: 'test2' }];  
var tempArray = []; 
    for(var i = 0; i < array.length; i++) 
    { 
     tempArray.push({name : array[i].name}); 
    } 
    array = tempArray; 
+0

我正在寻找解决方案,而不使用外部临时阵列。 –

相关问题