aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/global_objects/array/some/index.html
blob: 0fe959b0d735c5b180c722423ed3adf082633dde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
---
title: Array.prototype.some()
slug: Web/JavaScript/Reference/Global_Objects/Array/some
tags:
  - Array
  - ECMAScript5
  - JavaScript
  - Method
  - Prototype
  - Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Array/some
---
<div>{{JSRef}}</div>

<p>Die Methode <code><strong>some()</strong></code> überprüft ob mindestens ein Element des Arrays den als Funktion übergebenen Kriterien entspricht.</p>

<div class="note">
<p><strong>Hinweis:</strong> Diese Methode gibt <code>false</code> für jede Bedingung auf einem leeren Array zurück.</p>
</div>

<div>{{EmbedInteractiveExample("pages/js/array-some.html")}}</div>



<h2 id="Syntax">Syntax</h2>

<pre class="syntaxbox"><var>arr</var>.some(<var>callback</var>[, <var>thisArg</var>])</pre>

<h3 id="Parameter">Parameter</h3>

<dl>
 <dt><code>callback</code></dt>
 <dd>Funktion die jedes Element überprüft, nimmt drei Argumente entgegen:
 <dl>
  <dt><code>currentValue</code></dt>
  <dd>Das aktuell zu verarbeitende Element des Arrays.</dd>
  <dt><code>index</code>{{Optional_inline}}</dt>
  <dd>Der Index des aktuell zu verarbeitenden Elementes im Array.</dd>
  <dt><code>array</code>{{Optional_inline}}</dt>
  <dd>Die Arrayinstanz auf welcher die <code>some()</code> Methode aufgerufen wurde.</dd>
 </dl>
 </dd>
 <dt><code>thisArg</code>{{Optional_inline}}</dt>
 <dd>Wert der über das <code>this</code> Schüsselwort innerhalb von <code>callback</code> verfügbar ist.</dd>
</dl>

<h3 id="Rückgabewert">Rückgabewert</h3>

<p><code><strong>true</strong></code> wenn die callback Methode ein positives ({{Glossary("truthy")}}) Ergebnis für eines der Elemente im array ermittelt hat; Andernfalls, <code><strong>false</strong></code>.</p>

<h2 id="Beschreibung">Beschreibung</h2>

<p><code>some()</code> führt die <code>callback</code> Funktion einmal für jedes Element innerhalb des Arrays aus, bis ein Element gefunden wird, bei dem <code>callback</code> einen <em>truthy</em> Wert (<em>e</em>in Wert der durch die Konvertierung zu boolean true ergibt) zurückgibt. Wird ein solches Element gefunden, gibt <code>some()</code> sofort <code>true</code> zurück. <code>callback</code> wird nur für Elemente des Arrays ausgeführt, die einen zugewiesenen Wert haben; Für undefinierte oder gelöschte Elemente des Arrays wird <code>callback</code> nicht ausgeführt.</p>

<p><code>callback</code> wird mit drei Argumenten aufgerufen: Dem Wert des Elementes, dem Index des Elementes und dem zugrundeliegenden <code>Array</code>.</p>

<p>WIrd ein <code>thisArg</code> Parameter an die <code>some()</code> Methode übergeben, wird dieser als <code>this</code> bei der <code>callback</code> Funtion benutzt. Andernfalls wird der Wert {{jsxref("undefined")}} als <code>this</code> benutzt. Der tatsächliche Wert von <code>this</code> wird entsprechend der <a href="/de/docs/Web/JavaScript/Reference/Operators/this">generellen Regeln zur Belegung des this Schlüsselwortes innerhalb von Funktionen </a>gesetzt.</p>

<p><code>some()</code> verändert nicht das Array auf dem die Methode aufgerufen wurde.</p>

<p>Die von <code>some()</code> zu verarbeitenden Elemente werden vor dem ersten Aufruf von <code>callback</code> ermittelt. Elemente, die nach dem Aufruf von <code>some()</code> zum Array hinzugefügt werden, werden nicht mit <code>callback</code> aufgerufen. <span id="result_box" lang="de"><span>Wird ein noch nicht besuchtes Element des Arrays durch </span></span><code>callback</code><span lang="de"><span> geändert, wird sein Wert, der an </span></span><code>callback</code><span lang="de"><span> </span></span><span lang="de"><span> übermittelt wird, der Wert zu dem Zeitpunkt, zu dem <code>some()</code> den Index besucht, sein.</span></span> Wird ein Element aus dem Array gelöscht, wird es nicht betrachtet.</p>

<h2 id="Beispiele">Beispiele</h2>

<h3 id="Werte_eines_Arrays_überprüfen">Werte eines Arrays überprüfen</h3>

<p>Die folgenden Beispiele prüfen ob es ein Element größer als 10 im Array gibt.</p>

<pre class="brush: js">function isBiggerThan10(element, index, array) {
  return element &gt; 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true
</pre>

<h3 id="Werte_eines_Arrays_mit_arrow_functions_überprüfen">Werte eines Arrays mit arrow functions überprüfen</h3>

<p><a href="/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Arrow Funktionen</a> ermöglichen eine kürzere Schreibweise für die gleiche Logik.</p>

<pre class="brush: js">[2, 5, 8, 1, 4].some(x =&gt; x &gt; 10);  // false
[12, 5, 8, 1, 4].some(x =&gt; x &gt; 10); // true
</pre>

<h3 id="Prüfen_ob_ein_Element_in_einem_Array_existiert">Prüfen ob ein Element in einem Array existiert</h3>

<p>Um die Methode  <code>includes()</code> nachzuahmen, gibt  die folgende Funktion <code>true</code> zurück, wenn das Element im Array existiert:</p>

<pre class="brush: js">var fruits = ['apple', 'banana', 'mango', 'guava'];

function checkAvailability(arr, val) {
  return arr.some(function(arrVal) {
    return val === arrVal;
  });
}

checkAvailability(fruits, 'kela');   // false
checkAvailability(fruits, 'banana'); // true</pre>

<h3 id="Prüfen_ob_ein_Element_in_einem_Array_existiert_mit_einer_arrow_function">Prüfen ob ein Element in einem Array existiert mit einer arrow function</h3>

<pre class="brush: js">var fruits = ['apple', 'banana', 'mango', 'guava'];

function checkAvailability(arr, val) {
  return arr.some(arrVal =&gt; val === arrVal);
}

checkAvailability(fruits, 'kela');   // false
checkAvailability(fruits, 'banana'); // true</pre>

<h3 id="Jeden_Wert_in_einen_boolschen_Wert_konvertieren">Jeden Wert in einen boolschen Wert konvertieren</h3>

<pre class="brush: js">var TRUTHY_VALUES = [true, 'true', 1];

function getBoolean(a) {
  'use strict';

  var value = a;

  if (typeof value === 'string') {
    value = value.toLowerCase().trim();
  }

  return TRUTHY_VALUES.some(function(t) {
    return t === value;
  });
}

getBoolean(false);   // false
getBoolean('false'); // false
getBoolean(1);       // true
getBoolean('true');  // true</pre>

<h2 id="Polyfill">Polyfill</h2>

<p><code>some()</code> wurde im Rahmen des ECMA-262 Standards in der 5. Edition hinzugefügt. Daher kann es sein, dass es nicht in allen Implementierungen des Standards enthalten ist. Diese Problem kann behoben werden, indem folgenden Quelltext vor Ihren Skripten eingefügt wird, wodurch Sie die <code>some()</code> Methode in Ihrem Programmcode verwenden können. Die nachfolgende Implementierung ist eine exakte Abdeckung der ECMA-262 Spezifikation in der 5. Edition, basierend auf der Annahme dass {{jsxref("Object")}} und {{jsxref("TypeError")}} Originalwerte aufweisen und dass <code>fun.call</code> den Originalwert von {{jsxref("Function.prototype.call()")}} liefert.</p>

<pre class="brush: js">// Production steps of ECMA-262, Edition 5, 15.4.4.17
// Reference: http://es5.github.io/#x15.4.4.17
if (!Array.prototype.some) {
  Array.prototype.some = function(fun/*, thisArg*/) {
    'use strict';

    if (this == null) {
      throw new TypeError('Array.prototype.some called on null or undefined');
    }

    if (typeof fun !== 'function') {
      throw new TypeError();
    }

    var t = Object(this);
    var len = t.length &gt;&gt;&gt; 0;

    var thisArg = arguments.length &gt;= 2 ? arguments[1] : void 0;
    for (var i = 0; i &lt; len; i++) {
      if (i in t &amp;&amp; fun.call(thisArg, t[i], i, t)) {
        return true;
      }
    }

    return false;
  };
}
</pre>

<h2 id="Spezifikationen">Spezifikationen</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Spezifikation</th>
   <th scope="col">Status</th>
   <th scope="col">Kommentar</th>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td>Initiale Definition. Implementiert in JavaScript 1.6.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Browserkompatibilität">Browserkompatibilität</h2>

<div>


<p>{{Compat("javascript.builtins.Array.some")}}</p>
</div>

<h2 id="Siehe_auch">Siehe auch</h2>

<ul>
 <li>{{jsxref("Array.prototype.find()")}}</li>
 <li>{{jsxref("Array.prototype.forEach()")}}</li>
 <li>{{jsxref("Array.prototype.every()")}}</li>
 <li>{{jsxref("TypedArray.prototype.some()")}}</li>
</ul>