source: node_modules/es-toolkit/dist/compat/array/every.mjs

Last change on this file was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 1.7 KB
RevLine 
[a762898]1import { identity } from '../../function/identity.mjs';
2import { isIterateeCall } from '../_internal/isIterateeCall.mjs';
3import { property } from '../object/property.mjs';
4import { isArrayLike } from '../predicate/isArrayLike.mjs';
5import { matches } from '../predicate/matches.mjs';
6import { matchesProperty } from '../predicate/matchesProperty.mjs';
7
8function every(source, doesMatch, guard) {
9 if (!source) {
10 return true;
11 }
12 if (guard && isIterateeCall(source, doesMatch, guard)) {
13 doesMatch = undefined;
14 }
15 if (!doesMatch) {
16 doesMatch = identity;
17 }
18 let predicate;
19 switch (typeof doesMatch) {
20 case 'function': {
21 predicate = doesMatch;
22 break;
23 }
24 case 'object': {
25 if (Array.isArray(doesMatch) && doesMatch.length === 2) {
26 const key = doesMatch[0];
27 const value = doesMatch[1];
28 predicate = matchesProperty(key, value);
29 }
30 else {
31 predicate = matches(doesMatch);
32 }
33 break;
34 }
35 case 'symbol':
36 case 'number':
37 case 'string': {
38 predicate = property(doesMatch);
39 }
40 }
41 if (!isArrayLike(source)) {
42 const keys = Object.keys(source);
43 for (let i = 0; i < keys.length; i++) {
44 const key = keys[i];
45 const value = source[key];
46 if (!predicate(value, key, source)) {
47 return false;
48 }
49 }
50 return true;
51 }
52 for (let i = 0; i < source.length; i++) {
53 if (!predicate(source[i], i, source)) {
54 return false;
55 }
56 }
57 return true;
58}
59
60export { every };
Note: See TracBrowser for help on using the repository browser.