JavaScript问题:如何将字符串存入字符串数组、数字存入数字数组
问题分析与解决方案
核心错误
你代码里的类型判断逻辑出现了关键问题:
if( typeof(elementsPuller) == String)
typeof操作符返回的是小写的字符串类型标识(比如'string'、'number'),而String是JavaScript的内置构造函数,两者用==比较时会触发类型转换,结果永远为false,导致所有数组元素都被错误归类到tableOfNumbers中。
修正后的代码
const table = [1,5,55,23,645,'Arek','Hermiona','Tomek','Irena']; const tableOfNumbers = []; const tableOfNames = []; // 用forEach做遍历+副作用操作,比map语义更清晰(map的核心用途是返回新数组) table.forEach(element => { if (typeof element === 'string') { tableOfNames.push(element); } else { tableOfNumbers.push(element); } }); console.log(`Names elements: ${tableOfNames}`); console.log(`List elements: ${tableOfNumbers}`);
简洁优化方案(可选)
如果想让代码更简洁,可直接用filter方法生成目标数组:
const table = [1,5,55,23,645,'Arek','Hermiona','Tomek','Irena']; const tableOfNames = table.filter(item => typeof item === 'string'); const tableOfNumbers = table.filter(item => typeof item === 'number'); console.log(`Names elements: ${tableOfNames}`); console.log(`List elements: ${tableOfNumbers}`);
运行后即可得到预期输出:
Names elements: Arek,Hermiona,Tomek,Irena
List elements: 1,5,55,23,645
内容的提问来源于stack exchange,提问作者Arkadiusz Wróbel
相关产品推荐
相关产品推荐

