From 281251acd975a2e59f0b6d21889f49fe6d2be91f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=9A=8F=E6=98=93?= Date: Wed, 7 Aug 2024 11:19:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81:=20yd=5Far?= =?UTF-8?q?ray=5FpickBy=E5=87=BD=E6=95=B0=E6=94=B9=E4=B8=BAyd=5Farray=5Fpi?= =?UTF-8?q?ck=E5=B9=B6=E9=87=8D=E6=9E=84=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/array/{pickBy.js => pick.js} | 15 +++++++++------ lib/array/{pickBy.test.js => pick.test.js} | 20 ++++++++------------ 2 files changed, 17 insertions(+), 18 deletions(-) rename lib/array/{pickBy.js => pick.js} (61%) rename lib/array/{pickBy.test.js => pick.test.js} (70%) diff --git a/lib/array/pickBy.js b/lib/array/pick.js similarity index 61% rename from lib/array/pickBy.js rename to lib/array/pick.js index 99aa157..b791919 100644 --- a/lib/array/pickBy.js +++ b/lib/array/pick.js @@ -1,15 +1,18 @@ /** * 从数组中选择指定标签的项 - * @alias yd_array_pickBy + * @alias yd_array_pick * @category 数组操作 - * @param {object[]} arry - 需要处理的数组,其中每个对象包含 `label` 和 `value` 属性 - * @param {string[]} keys - 需要选择的标签列表 + * @param {Array} arrObj 数组对象 + * @param {string} field 匹配的字段 + * @param {Array} values 匹配的值 * @returns {object[]} 返回一个新数组,其中只包含具有指定标签的项 * @author 卞雪瑞 + * @author 陈随易 * @summary 这个函数根据给定的标签列表,从数组中选择所有匹配这些标签的项,并返回这些项。 * @example - * yd_array_pickBy( + * yd_array_pick( * [{ label: 'a', value: 1 }, { label: 'b', value: 2 }, { label: 'c', value: 3 }], + * 'label', * ['a', 'c'] * ); * 结果: @@ -18,6 +21,6 @@ * { label: 'c', value: 3 } * ] */ -export default (arry, keys) => { - return arry.filter((item) => keys.includes(item.label)); +export default (arrObj, field, values = []) => { + return arrObj.filter((item) => values.includes(item[field])); }; diff --git a/lib/array/pickBy.test.js b/lib/array/pick.test.js similarity index 70% rename from lib/array/pickBy.test.js rename to lib/array/pick.test.js index 539635a..914b431 100644 --- a/lib/array/pickBy.test.js +++ b/lib/array/pick.test.js @@ -1,15 +1,15 @@ -import yd_array_pickBy from './pickBy.js'; import { describe, expect, test } from 'vitest'; -describe('yd_array_pickBy', () => { +import yd_array_pick from './pick.js'; + +describe('yd_array_pick', () => { test('根据标签选择数组中的项', () => { const array = [ { label: 'a', value: 1 }, { label: 'b', value: 2 }, { label: 'c', value: 3 } ]; - const keys = ['a', 'c']; - const result = yd_array_pickBy(array, keys); + const result = yd_array_pick(array, 'label', ['a', 'c']); expect(result).toEqual([ { label: 'a', value: 1 }, { label: 'c', value: 3 } @@ -21,8 +21,7 @@ describe('yd_array_pickBy', () => { { label: 'a', value: 1 }, { label: 'b', value: 2 } ]; - const keys = ['c', 'd']; - const result = yd_array_pickBy(array, keys); + const result = yd_array_pick(array, 'label', ['c', 'd']); expect(result).toEqual([]); }); @@ -31,8 +30,7 @@ describe('yd_array_pickBy', () => { { label: 'a', value: 1 }, { label: 'b', value: 2 } ]; - const keys = ['a', 'b']; - const result = yd_array_pickBy(array, keys); + const result = yd_array_pick(array, 'label', ['a', 'b']); expect(result).toEqual([ { label: 'a', value: 1 }, { label: 'b', value: 2 } @@ -41,8 +39,7 @@ describe('yd_array_pickBy', () => { test('处理空数组', () => { const array = []; - const keys = ['a', 'b']; - const result = yd_array_pickBy(array, keys); + const result = yd_array_pick(array, 'label', ['a', 'b']); expect(result).toEqual([]); }); @@ -51,8 +48,7 @@ describe('yd_array_pickBy', () => { { label: 'a', value: 1 }, { label: 'b', value: 2 } ]; - const keys = []; - const result = yd_array_pickBy(array, keys); + const result = yd_array_pick(array, 'label', []); expect(result).toEqual([]); }); });