如何在JavaScript中创建使用字面量字符串的多级函数数组?
解决嵌套数组中函数调用的问题
嘿,我看到你的问题啦!其实核心问题非常简单——你只是忘记调用嵌套数组里的函数了😉
问题根源
当你写console.log(testC[0][0]);的时候,你只是获取了这个箭头函数的对象本身,并没有让它执行并返回你想要的字符串。就像你在一维数组里做的Title[1]()那样,必须加上括号()才能触发函数执行。
修正后的代码示例
var nameTemp = `Placeholder`; var testC = []; testC[0] = []; testC[0][0] = () => ` what does ${nameTemp} do?`; // 关键:加上()调用函数 console.log(testC[0][0]());
这样就能输出你期望的" what does Placeholder do?",当你更新nameTemp后再次调用,也会返回更新后的字符串。
扩展:批量处理嵌套数组的函数调用
如果你的嵌套数组有很多元素,想要批量执行并获取结果,可以用数组的map方法遍历:
var nameTemp = "Alice"; // 初始化一个二维函数数组 const multiTitle = [ [() => `Hello ${nameTemp}!`, () => `Nice to meet you.`], [() => `What does ${nameTemp} do?`, () => `How old is ${nameTemp}?`] ]; // 获取单个函数的执行结果 console.log(multiTitle[1][0]()); // 输出 "What does Alice do?" // 遍历整个二维数组,得到所有执行后的字符串数组 const allRenderedTexts = multiTitle.map(row => row.map(func => func())); console.log(allRenderedTexts); // 输出: // [ // ["Hello Alice!", "Nice to meet you."], // ["What does Alice do?", "How old is Alice?"] // ]
关于数组长度的小提示
如果之前遇到无法获取二级数组长度的问题,大概率是因为你没有正确初始化子数组。比如不要直接写testC[1][0] = () => ...,得先把testC[1]初始化为空数组:
var testC = []; // 先初始化子数组 testC[1] = []; // 再给子数组赋值 testC[1][0] = () => `Test`; // 现在就能正确获取长度了 console.log(testC[1].length); // 输出 1
内容的提问来源于stack exchange,提问作者user13057690
相关产品推荐
相关产品推荐

