js数据筛选为什么难住了公司80%的人?

475 阅读1分钟

背景

实际业务场景中遇到了一个数据筛选的逻辑,竟然难住了组内80%的前端人员。

条条大路通罗马,可惜大家都迷路了,很经典的一个前端逻辑,特此记录一下。

描述

给定一个数字n,给定数组arr内,根据define004后三位与数字n相匹配,返回对应applyAmount的值。

例如:输入1,返回100;输入14,返回1400;输入114返回 11400;

const arr = [
    {
        propertyCode: "define004",
        applyAmount: 400,
    },
    {
        propertyCode: "define001",
        applyAmount: 100,
    },
    {
        propertyCode: "define014",
        applyAmount: 1400,
    },
    {
        propertyCode: "define114",
        applyAmount: 11400,
    }
]

思路

根据define004后三位与数字n相匹配,得到当前对象,那怎么根据后三位去匹配呢?

有两个思路:

  1. define004后三位,类型转换为Number类型,然后与n比较是否相等
  2. 给数字n自动补齐0,拼接define,然后判断是否与definexxx相等

方法实现

掘友们有什么好的实现方式,欢迎补充

/**
 * @param {number} n
 * @param {Array} arr
 * @return {number}
 */
// 方法1
let returnVal = function (n, arr) {
    const res = arr.find(item => Number(item.propertyCode.substring(6)) === n)
    return res && res.applyAmount
}
// 方法2
const returnVal = function (n, arr) {
    const res = arr.find(item => `define${String(n).padStart(3, "0")}` === item.propertyCode)
    return res && res.applyAmount
}