将对象数组转换成字符串格式
2017-12-08 本文已影响1人
Lia代码猪崽
有这样的需求:
一个成员为对象的数组,转成一个类似json结构的字符串。
// 将数组转换成字符串 a为数组!
arrayToString(a) {
// 最左边的'['
let str = "[";
// 数组有i个元素
for(let i = 0; i < a.length; i++) {
// 获取到index为i的元素,用obj来暂时存放
let obj = a[i];
// 获取到这个元素的所有属性名(比如例子的"id"、"name")
let keys = Object.keys(obj);
// 每个对象最左边的'{'
str = str + "{";
// 遍历属性
for(let j = 0; j < keys.length; j++) {
// 如果是最后一个属性了,不应该有‘,’,其他都应该有,比如:
// str = '[{id:"1",' + 'name' + ':' + '\"' + 'aa' + '\"'
// 所以str为 [{id:"1",name:"aa"}
if(j === keys.length-1) {
str = str + keys[j] + ":" + "\"" + obj[keys[j]] +"\""
} else {
str = str + keys[j] + ":" +"\"" +obj[keys[j]] +"\"" + ","
}
}
// 最后一个元素了,就应该有‘]’,不是的话是‘,’
if(i === a.length-1) {
str = str + "}]";
} else {
str = str + "},";
}
}
return str;
},
实际例子如下:
// 数组
const a = [
{
id: '1',
name: 'aa'
},
{
id: '2',
name: 'bb'
},
{
id: '3',
name: 'cc',
special: 'hahaha'
}
];
// 字符串
let jsonStr = arrayToString(a);
//'[{id:"1",name:"aa"},{id:"2",name:"bb"},{id:"3",name:"cc",special: "hahaha"}]'