【发布时间】:2020-12-19 14:44:42
【问题描述】:
async getModifiedData() {
let dbData = await dbdata.getData();
let fileData = [];
dbData.map(data => {
fileData[data["uniquePropertyName"]] = data;
});
return fileData; // here I'm getting empty array
}
而我在使用 push() 方法时得到填充数组,
async getModifiedData() {
let dbData = await dbdata.getData();
let fileData = [];
dbData.map(data => {
let propertyName = data["uniquePropertyName"];
let obj = {};
obj[propertyName] = data;
fileData.push(obj);
});
return fileData; // here I'm getting filled array
}
当数组大小较小时,两者都可以正常工作,但对于较大的数组,Array.push() 仅返回填充数组。谁能解释这里发生了什么。
【问题讨论】:
-
请不要使用
.map()进行单次迭代。使用.forEach()或一个简单的循环。 -
@VLAZ 在这种情况下,
.map()将是正确的工具,如果没有以错误的方式使用...fileData = dbData.map(data => /*...*/ return obj) -
数组是特殊的对象。所有对象都支持分配给任意属性名称。对任意属性名称的赋值不会自动将这些值插入到我们在引用数组内容时想到的特殊可迭代集合中。
-
第一个例子在我看来不合适。
data["uniquePropertyName"]是否返回唯一索引(= 数字)?否则fileData应该是一个对象而不是一个数组(而map()应该是.forEach())
标签: javascript arrays push