javascript中的字符串连接
我尝试构建一个JSON对象,最终将其保存到一个文件中。但我发现,如果我使用一个“element+=element”,它将抛出“Invalid string length”字符串。但是对于方法2,我可以压缩一个很长的字符串并保存一个文件。(文件大小约为50mb)。所以我想知道我的第一种方法有什么问题javascript中的字符串连接,javascript,string,concatenation,string-concatenation,Javascript,String,Concatenation,String Concatenation,我尝试构建一个JSON对象,最终将其保存到一个文件中。但我发现,如果我使用一个“element+=element”,它将抛出“Invalid string length”字符串。但是对于方法2,我可以压缩一个很长的字符串并保存一个文件。(文件大小约为50mb)。所以我想知道我的第一种方法有什么问题 const person = { id: 1, name: "john" } personJson = JSON.stringify(person); person
const person = {
id: 1,
name: "john"
}
personJson = JSON.stringify(person);
personJson = personJson + ',';
let element = personJson;
for (let index = 0; index < 500; index++) {
element += element;
}
const person={
id:1,
姓名:“约翰”
}
personJson=JSON.stringify(person);
personJson=personJson+',';
让element=personJson;
对于(让索引=0;索引<500;索引++){
元素+=元素;
}
let元素=personJson;
对于(让索引=0;索引<100000;索引++){
element=element+personJson;
}
在这两种方法中,您会产生不同的结果,即。
假设personJson
包含字符串“ab”
元素=元素+元素代码>正在生成结果
"ab" + "ab"
"abab" + "abab"
"abababab" + "abababab"
element=element+personJson代码>
"ab" + "ab"
"abab" + "ab"
"abababab" + "ab"
const person={
id:1,
姓名:“约翰”
}
personJson=JSON.stringify(person);
personJson=personJson+',';
让element=personJson;
对于(让索引=0;索引<500;索引++){
元素+=元素;
console.log(元素长度);
}
正如评论中指出的,这可能不是编码JSON的最佳方式
关于它发生的原因,这是因为您的第一个循环实际上是每次迭代将大小乘以2,所以它呈指数增长。它的大小很快就超过了第二个循环,最终超过了用户允许的最大字符串大小
您可以创建任意数量的对象数组,以添加到数组中。比如:
const persons= [] ;
persons.push({id:1 , name: 'Shayan' });
persons.push({id:2 , name: 'john' });
...
没有JSON对象这样的东西。JSON总是一个字符串。不要自己尝试编码JSON<代码>JSON.stringify([person1,person2,person3])将正常工作,因为js中没有对象或数组是引用类型,所以它使用堆内存。如果我将100000个对象添加到一个数组中,那么反序列化为JSON会显著增加内存使用量吗?或者,我序列化了一个对象并将其关联1000次(cos string在js中是premetive类型,使用更少的内存),然后保存到一个使用更少内存的文件中?
index = 0 ; length = 23
index = 1 ; length = 46
index = 2 ; length = 92
...
index = 24 ; length = 385875968
index = 25 ; length = 771751936
const persons= [] ;
persons.push({id:1 , name: 'Shayan' });
persons.push({id:2 , name: 'john' });
...