JS中数组、对象、字符串之间的转换

数组——字符串

1、数组转字符串

  • 方法一:.toString()/String()(.toString()可以将除了null和defined的数据类型都转化为字符串,可以转化进制字符串;String()可以将null和undefined转化为字符串,但是没法转化进制字符串)
    将数组转成一个字符串,然后以逗号连接输出
var a=[1,2,3,4,5]
var b=a.toString()
var c=String(a)
console.log(b)//1,2,3,4,5
console.log(typeof(b))//string
console.log(c)//1,2,3,4,5
console.log(typeof(c))//string

字符隐式,+ 会自动调用toString()方法将数组转为字符串

var a=[1,2,3,4,5]
var b=[6,7,8,9,0]
var c=a+b
console.log(c)//1,2,3,4,56,7,8,9,0(连接处没有,)
console.log(typeof(c))//string

多维数组,会把每一层的数组都转化为字符串

var a= [[1,[2,3],[4,5]],[6,[7,[8,9],0]]];
var b=a.toString()
console.log(b)//1,2,3,4,5,6,7,8,9,0
console.log(typeof(b))//string
  • 方法二:.toLocaleString()
    用作数组转字符串时和.toString()用法一样,主要区别在于 .toLocaleString() 方法能够使用用户所在地区特定的分隔符把生成的字符串连接起来,形成一个字符串。主要用于可根据本地时间把Date对象转换为字符串,并返回结果【以本地时间区表示,并根据本地规则格式化。】
var a= [1,2,3,4,5];
var b=a.toLocaleString()
console.log(b)//1,2,3,4,5
console.log(typeof(b))//string
  • 方法三:.join()(不会改变自身)
    .join()将数组转成字符串,可以传递一个参数指定分隔符,当省略参数时,默认使用“,”,此时和toString()用法相同。
var a= [1,2,3,4,5];
var b=a.join("-")
console.log(b)//1-2-3-4-5
console.log(typeof(b))//string

2、字符串转数组

- .split()
将字符串以指定的分隔符分割成数组

var a="12_256_2_0"
console.log(b)//[ '12', '256', '2', '0' ]

数组中字符串与数字互转
由字符串转成的数组每一项都是字符串,有时需要将其转成数字
字符串转数字

var a = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
a.map(Number);  //结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

数字转字符串

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(String);  //结果: ['1', '2', '3', '4', '5', '6', '7', '8', '9']

对象——字符串

1、对象转字符串

  • JSON.stringify()
var obj={
	name:'张一',
	age:25,
	sex:'男'
}
var str=JSON.stringify(obj)
console.log(str)//{"name":"张一","age":25,"sex":"男"}
console.log(typeof(str))//string

2、json字符串转对象

JSON.parse

var str='{"name":"张一","age":25,"sex":"男"}'
var obj=JSON.parse(str)
console.log(obj)//{ name: '张一', age: 25, sex: '男' }
console.log(typeof(obj))//object

数组——对象

js中数组与对象的转换没有内置方法,只能写自定义方法
1、数组转对象

let arr = [ {
    "key": "name",
    "value": "张一"
  },
  {
    "key": "age",
    "value": 25
  },
  {
    "key": "sex",
    "value": "男"
  }]
let obj = {}
arr.forEach(item=> {
    obj[item.key] = item.value
})
console.log('obj', JSON.stringify(obj, null, 2));
//输出结果
obj {
  "name": "张一",
  "age": 25,
  "sex": "男"
}

2、对象转数组

let arr = []
var obj={
	name:'张一',
	age:25,
	sex:'男'
}
for(let v in obj) {
    arr.push({
        key: v,
        value: obj[v]
    })
}
console.log('arr', JSON.stringify(arr, null, 2));

//输出结果
arr [
  {
    "key": "name",
    "value": "张一"
  },
  {
    "key": "age",
    "value": 25
  },
  {
    "key": "sex",
    "value": "男"
  }
]
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐