如何仅填充子文档数组首个元素?空数组长度疑问
问题解答
首先直接给出结论:当myData数组为空时,myDocument.data.length应该等于0。
核心逻辑分析
你的需求是「仅填充data数组的首个元素,且这个元素来自myData数组的首个元素」—— 这意味着data数组的元素是完全依赖myData的有效元素存在与否来生成的。如果myData本身是空的,没有可选取的首个元素,那自然没有符合要求的内容可以填充到data[0]里,此时data数组应该保持为空状态,也就是长度为0。
如果强制让data数组长度为1,那data[0]会是undefined或者空值,这反而违背了需求的初衷:你要的是「选取myData的首个元素」,而不是「不管有没有元素都塞一个空值进去」,这种无效数据还会给后续处理myDocument.data[0]的逻辑增加额外的空值判断成本。
代码示例参考
符合需求的处理逻辑:
// 模拟空的myData数组 const myData = []; const myDocument = { data: [] }; // 仅当myData存在有效元素时,填充首个元素到data数组 if (myData.length > 0) { myDocument.data.push(myData[0]); } console.log(myDocument.data.length); // 输出 0,完全符合需求预期
反例(不符合需求的错误逻辑):
const myData = []; const myDocument = { data: [myData[0]] }; // 此时data[0]为undefined console.log(myDocument.data.length); // 输出1,但这个元素是无效的,违背「选取有效元素」的需求
内容的提问来源于stack exchange,提问作者Edgaras Karka
相关产品推荐
相关产品推荐

