const formData = {location: 'Park',address: '123 Main St',latitude: '37.7749',longitude: '-122.4194'
};
1、怎样把这个对象转化为一个数组?
2、然后又怎样把转化后的数组再转化回来?
3、怎样将这两个方法单独封装成函数?
方法 1: 将对象转换为包含键值对的对象数组
/*** 将对象转换为包含键值对的对象数组* @param {Object} obj - 要转换的对象* @return {Array} 包含键值对的对象数组*/
function objectToArray(obj) {return Object.keys(obj).map(key => ({key: key,value: obj[key]}));
}// 示例用法
const formData = {location: 'Park',address: '123 Main St',latitude: '37.7749',longitude: '-122.4194'
};const formDataArray = objectToArray(formData);
console.log('转换后的数组:', formDataArray);
方法 2: 将数组转换为对象
/*** 将包含键值对的对象数组转换为对象* @param {Array} arr - 包含键值对的对象数组* @return {Object} 转换后的对象*/
function arrayToObject(arr) {return arr.reduce((accumulator, current) => {accumulator[current.key] = current.value;return accumulator;}, {});
}// 示例用法
const responseArray = [{ "key": "location", "value": "Park" },{ "key": "address", "value": "123 Main St" },{ "key": "latitude", "value": "37.7749" },{ "key": "longitude", "value": "-122.4194" }
];const formData = arrayToObject(responseArray);
console.log('转换后的对象:', formData);
说明
-
objectToArray
方法:接受一个对象作为参数,将其转换为包含键值对的对象数组。使用Object.keys()
获取对象的所有键,然后用map
方法将每个键值对转成包含key
和value
属性的对象。 -
arrayToObject
方法:接受一个包含键值对的对象数组,将其转换回一个对象。使用reduce
方法遍历数组,将每个元素的key
和value
属性赋值到累加器对象中。
测试
复制到浏览器控制台打印即可