【发布时间】:2016-11-29 19:05:01
【问题描述】:
所以我有一个对象如下:
var data = [
{
unmatchedLines: [], //possible big array ~700+ lines per entry
statusCode: 200,
title: "title",
message: "some message",
details: [],
objectDetails: []
},
{
//same object here
}
];
这个数组被服务调用填充,然后循环通过合并输出,然后将这个结果发送回前端。
function convertResultToOneCsvOutput(data) {
var outPutObject = {
unmatchedLines: [],
responses: []
};
for(var i = 0; i < data.length; i++) {
if(data[i].fileData) {
outPutObject.unmatchedLines = outPutObject.unmatchedLines.concat(data[i].fileData);
}
outPutObject.responses.push({
statusCode: data[i].statusCode,
title: data[i].title,
message: data[i].message,
details: data[i].details,
objectDetails: data[i].objectDetails,
})
}
return outPutObject;
};
现在我首先使用delete 来从data 对象中删除unmatchedLines,这样我就可以这样做,而不是创建一个全新的对象并将其推送到输出:
delete data[i].unmatchedLines;
outPutObject.responses.push(data[i]);
但后来我读到delete 非常慢,并且偶然发现了一篇帖子说将它放到undefined 而不是使用delete 会更快。
我的问题:
到底用什么比较好? delete,设置为 undefined 还是像我现在正在做的那样自己创建一个新对象?
【问题讨论】:
-
@RonvanderHeijden 很好,谢谢。