javascript的奇怪行为

时间:2015-08-14 09:19:57

标签: javascript node.js

请参阅随附的屏幕截图。请参阅Object的pendingApp属性。当我在eclipse中调试然后pendingApp显示对象数组,这是正确的!但当我JSON.stringify(object)然后向我显示空数组。 Eclipse Image

Terminal Image

请让我知道这种行为的原因。我想我不知道任何Java脚本的思想/概念? :P:)

当我将此对象保存到数据库中时,将存储pendingApp的空白数组!!

var pending_app = [];
var new_record = {"pendingApp" : [], "installedApp" :[] };
....SOME CODE+conditions HERE....
 pending_app[appId] = {'action' : action };
 new_record.pendingApp = pending_app;
// create app-config data
 return app_model.create(new_record); //will return promise object

1 个答案:

答案 0 :(得分:1)

这不是一种奇怪的行为,而是使用Array存储键值数据的常见错误。

简答:使用文字对象存储这些数据

虽然您可以在Javascript中的每个对象上添加属性,但您无法使用默认数组机制迭代它们

for (var i = 0; i < array.length; i++){}
array.forEach();

简单演示:

var array = [];
array["anId"] = 1;
array.length; // 0

array[4294967295] = 1; // Indice >= unsigned 32-bit Max Value
array.length; // 0
array[4294967295]; // 1

因此JSON.stringify ECMAScript 5 Specification fromDates[pointIndex]会使用Array机制迭代所有项目而不会发现任何内容。

Objects不同,您可以使用

列出属性
Object.keys(array); // ["anId"]