You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:57:09