我有一个从文件系统读取文件并将它们存储到数组中的函数。之后我想为该元素添加一个键/值对。但是,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
第一个长度方法正在工作,第二个长度方法没有。 我想知道第二个函数我做错了什么以及如何解决它。
实际上,我的主要目标是添加新密钥。但是,我不知道如何在我的代码中使用一些Object.keyValues(elements).forEach(function(elem){...}。如果你有一个提示,这也很好。
我真的很感激这里有一些见解! : - )
答案 0 :(得分:4)
Object.keys()
方法返回给定对象自己的可枚举属性的数组,其顺序与for...in
循环提供的顺序相同(不同之处在于for-in循环枚举原型链中的属性。)
Object.keys
返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串。属性的顺序与通过手动循环对象的属性给出的顺序相同。
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