我有一个变量:
var testData;
我有一个填充数组的函数。遍历一个数组并创建另一个数组:
var person = {
"Name": obj.Name,
"Age": obj.Age,
}
partsObject.push(person);
然后我想将这个数组变成JSON,这样我就可以将它与我的D3对象一起使用,所以我这样做:
testData = JSON.stringify(partsObject);
我可以控制记录这个变量,但是当试图通过D3的forEach方法来完成它时,如下所示:
testData.forEach(function(d) // data is the JSON
{
我收到错误Uncaught TypeError: testData.forEach is not a function
我不明白如何将变量记录到控制台,但就好像我不能将它用作JSON一样。有任何想法吗 ?
答案 0 :(得分:3)
顾名思义stringify()
将JavaScript对象(JSON中的JSO)转换为JSON的字符串。您可console.log()
因为console.log
需要一个字符串,并且任何不是字符串的内容都会被转换为一个字符串。
如果要再次将其用作数组,则需要将JSON字符串解析回JavaScript对象:JSON.parse(testData)
。
答案 1 :(得分:2)
你真的不需要将你的Array字符串化传递给d3。不要混淆javascript对象,因为forEach
需要一个数组循环,你传递一个字符串来操纵forEach
函数
使用:
partsObject.forEach(function(d)
{
...
JSON.stringify(partsObject);
创建一个字符串"{'Name':'ABC','Age':23}"
Uncaught TypeError: testData.forEach is not a function
答案 2 :(得分:1)
您正在尝试遍历字符串,因为 stringify 您的数组。
只需执行partsObject.forEach
并且不要对您的数组进行字符串化。
答案 3 :(得分:1)
.stringify()
将Javascript对象转换为字符串。你想要运行
partsObjects.forEach()
或者您可以将stringify' ed字符串转换回带有
的对象(JSON.parse(testData)).forEach()