本文主要记录一下关于数组与对象互相转换的问题,写的如有不妥之处,还请大家多多指教!
有一个如:[{key1 : val1 , key2 : val2 , key3 : val3}, {key1 : val1 , key2 : val2 , key3 : val3} , ... , {key1 : val1 , key2 : val2 , key3 : val3}] 这种类型的数组对象,现在需要把所有的key1 : val1 都去掉。根据我了解到的,做了如下一个实例:
把所有的id:'i'都去掉,js代码如下:
//去除所有的id的key:value,保留其他的key:value
var newObj = {};
var arrList = [
{id:1, name:'惊鲵',sex:'1'},
{id:2, name:'掩日',sex:'2'},
{id:3, name:'黑白玄翦',sex:'3'}
];
var newArr = [];
arrList.forEach(function(item,i){
for ( var key in item) {
if(key != 'id'){
newObj[key] = item[key];
}
}
newArr.push(newObj);
newObj = {};//这步至关重要,每循环一次,都要清空一次,否则拿到的数据总是最后一条
});
console.log(newArr);
逻辑步骤:
- 首先,对该数组对象arrList进行遍历,然后用for..in 的方法可以得到需要去掉的key值,然后根据if条件进行判断;
- 其次,声明一个新的对象newObj,用新的对象来接收其他的key和value(即将其他的key和value重新组成一个新的对象);
- 然后,再声明一个新的数组newArr,将数组对象放在该容器中;
- 最后至关重要且又容易被忽略的一点:在for..in 的外边需要清空一次新声明的对象newObj,否则最后打印出来的结果永远只会是最后一条数据。
最终实现的效果如下:
[{name: "惊鲵", sex: "1"},{name: "掩日", sex: "2"},{name: "黑白玄翦", sex: "3"}]
测试结果图如下,id成功被去掉:
PS:如果没有清空newObj,会出现什么样的效果,截图给大家展示一下: