【发布时间】:2018-03-23 15:02:27
【问题描述】:
我对 Javascript 感到疯狂,因为我无法让 JSON.stringify 与简单的对象数组一起工作。我在谷歌上搜索过类似的问题,但没有解决我的问题。
代码如下:
console.log(array);
console.log(typeof array);
console.log(Array.isArray(array));
console.log(JSON.stringify(array));
这里是输出:
所以第一行是正确的,这是一个对象数组。 第二行对我来说是错误的,但由于 Javascript 似乎是正确的。第三行是正确的。第四行不正确,数组被字符串化为空对象?
我可能错过了一件愚蠢的事情,但我真的不知道是什么。
谢谢
编辑: 这里我以前是如何全局创建数组的
var array = [];
...
array.push(obj);
EDIT2:完整代码
sendCameras= function(cameraArray){
var message = {};
message.cameras = cameraArray;
console.log("----------------");
console.log(cameraArray);
console.log(typeof cameraArray);
console.log(Array.isArray( cameraArray));
console.log(cameraArray.length);
console.log(JSON.stringify({cameraArray:Array}));
event.source.postMessage(JSON.stringify(message), event.origin);
}
调用上一个函数的第二部分代码:
openCamerasByNames= function(cameras){
var cameraToOpen = [];
var openCamerasByIdFromNames =function (){
external_bloc :for (let i = 0; i < cameras.length; i++){
internal_bloc :for (let j = 0; j < cameraList.cameras.length; j++){
if (cameraList.cameras[j].name == cameras[i].name){
openCameraById(cameraList.cameras[j].id);
cameraToOpen.push(cameraList.cameras[j]);
break internal_bloc;
}
}
}
}
sendCameras(cameraToOpen);
...
EDIT3:cameraList 是从 JSON.parse 创建的
【问题讨论】:
-
数组为空...
-
@smac89 不,它只有一个元素。
-
呃,你好像说得对?!我添加了 console.log(array.length) 它输出 0.
-
是的,你得到的输出对于给定的输入毫无意义。确保没有东西劫持了
JSON的stringify方法 -
提示:您可以使用
<>按钮创建一个可运行的示例来演示该问题。但是你得到的输出看起来几乎是不可能的。
标签: javascript