NodeJS差异Object.keys(数组).length和array.length

我有一个从文件系统读取文件并将其存储到数组中的函数。 之后我想添加一个键/值对的元素。 但是,forEach循环没有执行,因为显然没有元素在那里。

readFilesFromDirectory(folder, elements, 'json', function(){ log(Object.keys(elements).length,0); log(elements.length,0); elements.forEach(function(elem){ elem["newKey"] = 1; }); }); 

我的日志包含以下行:

 1 0 

第一个长度方法正在工作,第二个不是。 我想知道我在做什么错误的第二个function,我怎么能解决它。

其实,我的主要目标是添加新的密钥。 但是,我不知道如何在代码中使用一些Object.keyValues(elements).forEach(function(elem){…}如果你有一个提示,这也是很好的。

我真的很感谢这里的一些见解! 🙂

Object.keys()方法返回给定对象自己可枚举属性的数组,其顺序与for...in循环所提供的顺序相同(区别在于for-in循环枚举了原型链中的属性,如好)。

Object.keys返回一个数组,其元素是对应于直接在对象上find的可枚举属性的string。 属性的sorting与通过手动循环对象的属性所给出的顺序相同。

 var arr = ["a", "b", "c"]; alert(Object.keys(arr)); // will alert "0,1,2" // array like object var obj = { 0 : "a", 1 : "b", 2 : "c"}; alert(Object.keys(obj)); // will alert "0,1,2" // array like object with random key ordering var an_obj = { 100: "a", 2: "b", 7: "c"}; alert(Object.keys(an_obj)); // will alert "2, 7, 100" // getFoo is property which isn't enumerable var my_obj = Object.create({}, { getFoo : { value : function () { return this.foo } }}); my_obj.foo = 1; alert(Object.keys(my_obj)); // will alert only foo