我正在获取一个文件数组,然后我想为每个文件对象添加日期和大小属性,但是使用下面的代码,它们不会被添加。我知道我的fs.statSync(p + file).mtime.getTime()
和fs.statSync(p + file).size
中有值。
var files = fs.readdirSync(p);
files.sort(function(a, b) {
return fs.statSync(p + a).mtime.getTime() -
fs.statSync(p + b).mtime.getTime();
});
files.forEach(function(file) {
file.date = fs.statSync(p + file).mtime.getTime();
file.size = fs.statSync(p + file).size;
});
console.log('files::'+files); // doesn' have the new file.date and file.size property.
答案 0 :(得分:3)
当您将值写入file
变量时,它不会保存,因为file
它的变量位于本地范围内。所以快速解决这个问题:
var files = fs.readdirSync(p),
result = [];
files.sort(function(a, b) {
return fs.statSync(p + a).mtime.getTime() -
fs.statSync(p + b).mtime.getTime();
});
files.forEach(function(file) {
file.date = fs.statSync(p + file).mtime.getTime();
file.size = fs.statSync(p + file).size;
result.push(file);
});
console.log('files::' + result);
答案 1 :(得分:0)
file
变量是局部变量。无需像Eugene那样创建新数组,您可以通过以下方式更新原始数组:
var files = fs.readdirSync(p);
files.sort(function(a, b) {
return fs.statSync(p + a).mtime.getTime() -
fs.statSync(p + b).mtime.getTime();
});
files.forEach(function(file, index, array) {
array[index].date = fs.statSync(p + file).mtime.getTime();
array[index].size = fs.statSync(p + file).size;
});
console.log('files::'+files);
答案 2 :(得分:0)