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
属性赋值到累加器对象中。
测试
复制到浏览器控制台打印即可