get_filter/index.js

import cavar_type from "../cavar_type";

/**
 * 功能:过滤功能函数,对数组、字符串、对象进行过滤 当传入非规定类型数据时提示报错并且返回一个空数组以免页面出现基本问题
 * @param {array|object|string} data - 目标数组、字符串、对象
 * @param {function} callback - 执行函数,对data参数进行处理的回调函数,需要对特殊条件进行return判断,该回调函数可以接受两个参数 1. item每一个成员;2.index 对应索引(或下标)
 * @returns {array} - 数组,如果没有满足执行函数return 值的函数规则时 返回空数组
 */

function get_filter(data, callback) {
  const task_data = cavar_type(data);
  if (data && callback) {
    if (
      task_data === "array" ||
      task_data === "object" ||
      (task_data === "string" && cavar_type(callback) === "function")
    ) {
      if (task_data === "array") {
        return Array.prototype.filter.call(data, callback);
      } else if (task_data === "object") {
        let data_object = Object.keys(data);
        let new_data_object = [];
        data_object.forEach((item, index) => {
          new_data_object[index] = data[item];
        });
        return Array.prototype.filter.call(new_data_object, callback);
      } else if (task_data === "string") {
        let data_string = data.split("");
        return Array.prototype.filter.call(data_string, callback);
      }
    } else {
      let type_num = "first";
      console.error(
        new Error("get_filter: " + type_num + " is " + task_data + " you is sb")
      );
      return [];
    }
  } else {
    let type_num;
    if (data) {
      type_num = "first";
    } else {
      type_num = "second";
    }
    console.error(
      new Error(
        "get_filter: " +
          type_num +
          "parameter" +
          " is " +
          task_data +
          " you is sb"
      )
    );
    return [];
  }
}

export default get_filter;