一、数组转对象
1. 一维数组转对象
如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名
const arr1 = [{ label: '昨天', value: '4-09' },{ label: '今天', value: '4-10' },{ label: '明天', value: '4-11' }] // 一维数组转obj [{},{}] => {} function arr1toobj(arr) { const obj_1 = arr.reduce((res, item, index) => (res[index] = item.value, res), {}) console.log('一维数组转obj', obj_1); // 指定键名 const obj_2 = arr.reduce((res, item) => (res[item.label] = item.value, res), {}) console.log('一维数组转obj----指定键名', obj_2); } arr1toobj(arr1)
2. 二维数组转对象
object.fromentries()实现
const arr2 = [['昨天','4-09'], ['今天','4-10'], ['明天','4-11']] // 二维数组转obj [['',''],['','']] => {} function arr2toobj(arr) { return object.fromentries(arr) } console.log('二维数组转obj', arr2toobj(arr2));
3. 二维数组转对象
map实现
const obj_a = {a: 1} const obj_b = {b: 1} const arr3 = [['昨天','4-09'],['今天','4-10'],['明天','4-11'],[obj_a, '是一个引用类型的a'],[obj_b, '是一个引用类型的b']] // 二维数组转obj by map [['',''],['','']] => {} function arr2toobjbymap(arr) { const map = new map(arr) let obj = object.create(null); for (let [k,v] of map) { obj[k] = v; } return obj; } console.log('二维数组转obj by map', arr2toobjbymap(arr3))
二、对象转数组
1. 对象转一维数组
const obj = { '上午': ['上午数组值'], '下午': ['下午数组值'], '晚上': ['晚上数组值'], } // obj转一维数组 [{},{},{}] function objtoarr1(obj) { let arr = [] object.keys(obj).foreach(key => { arr.push({ label: key, value: obj[key] }) }) return arr } console.log('obj转一维数组',objtoarr1(obj));
2. 对象转二维数组
function objtoarr2(obj) { // 方法一 let arr = [] object.keys(obj).foreach(key => { arr.push([key, obj[key]]) }) return arr // 或者 方法二 return object.entries(obj) } console.log('obj转二维数组', objtoarr2(obj));
3. 对象转二维数组
map实现, 主要是 map 转数组
function objtoarrbymap(obj) { const map = new map(object.entries(obj)) console.log('map', map); // map转对象 const my_map = new map(map) return [...my_map] } console.log('obj转二维数组 by map', objtoarrbymap(obj))
以上就是js中数组与对象相互转换的实现方式的详细内容,更多关于js数组与对象转换的资料请关注代码网其它相关文章!
发表评论