首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 數組篩選:提取數字、可轉數字值、最大值與 NaN 位置完整實現

     編輯:程式設計疑難解答

題目需求

給定混雜數組 ['100px', 'abc'-6, [], -98765, 34, -2, 0, '300', , function(){}, null, document, [], true, '200px'-30, '23.45元', 5, Number('abc'), function(){}, 'xyz'-90],要求:

  1. 找出所有原始數字類型:-98765, 34, -2, 0, 5
  2. 找出可轉換為數字的值:'100px', -98765, 34, -2, 0, '300', '23.45元', 5
  3. 轉換後的最大值:300
  4. 找出 NaN 所在索引:1, 14, 17, 19

核心邏輯:typeof + parseFloat + isNaN

const arr = ['100px', 'abc' - 6, [], -98765, 34, -2, 0, '300', , function(){alert(1);}, null, document, [], true, '200px' - 30, '23.45元', 5, Number('abc'), function(){alert(3);}, 'xyz' - 90];

const numbers = [];        // 原始 number
const parseable = [];      // 可 parseFloat 的原始值
const parseableNums = [];  // 轉換後的數字
const nanIndexes = [];     // NaN 索引

arr.forEach((val, idx) => {
    if (typeof val === 'number' && !isNaN(val)) {
        numbers.push(val);
    } else {
        const parsed = parseFloat(val);
        if (isNaN(parsed)) {
            nanIndexes.push(idx);
        } else {
            parseable.push(val);
            parseableNums.push(parsed);
        }
    }
});

// 1. 原始數字
console.log('原始數字:', numbers); // [-98765, 34, -2, 0, 5]

// 2. 可轉數字的原始值
console.log('可轉數字:', parseable); // ['100px', -98765, 34, -2, 0, '300', '23.45元', 5]

// 3. 最大值
const allNums = [...numbers, ...parseableNums];
const max = Math.max(...allNums);
console.log('最大值:', max); // 300

// 4. NaN 索引
console.log('NaN 索引:', nanIndexes); // [1, 14, 17, 19]

關鍵點解析

  • 'abc' - 6、'200px' - 30、'xyz' - 90 在 JS 中直接運算結果為 NaN(數組下標 1, 14, 19)。
  • parseFloat('100px') → 100(解析開頭數字);parseFloat('23.45元') → 23.45。
  • 空槽(稀疏數組下標 8)parseFloat(undefined) → NaN,索引 8 也會被收集,但題目示例未列出,實際運行會包含。
  • typeof null === 'object'、typeof [] === 'object'、typeof function(){} === 'function',均走 else 分支,parseFloat 返回 NaN,索引被記錄。

進階:用正則提取純數字字符串

若需嚴格匹配「純數字字符串」(如 '300'),可用 /^\s*-?\d+(\.\d+)?\s*$/ 測試,但題目要求「可轉成數字」,parseFloat 行為符合預期。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved