JavaScript. Подробное руководство, 6-е издание, стр. 84
<b>var objects = [{х:1}, {у:2}, {z:3}];</b><b>var merged = objects.reduce(union); // => {x:1, y:2, z:3}</b>Напомню, что, когда два объекта имеют свойства с одинаковыми именами, функция
<b>union()</b><b>reduce()</b><b>reduceRight()</b><b>var objects = [{х:1,а:1}, {у:2,а:2}, {z:3,а:3}]:</b><b>var leftunion = objects.reduce(union); // {x:1, y:2, z:3. a:3}</b><b>var rightunion = objects.reduceRight(union); // {x:1, y:2, z:3, a:1}</b>7.9.6. Методы indexOf() и lastlndexOf()
Методы
<b>indexOf()</b><b>lastlndexOf()</b><b>indexOf()</b><b>lastlndexOf()</b><b>а = [0.1,2.1,0];</b><b>a. indexOf(1) // => 1: а[1] = 1</b><b>a.lastlndexOf(1) // => 3: а[3] = 1 </b><b>a.index0f(3) // => -1: нет элемента со значением 3</b>В отличие от других методов, описанных в этом разделе, методы
<b>indexOf()</b><b>lastlndexOf()</b><b>indexOf()</b><b>lastlndexOf()</b><b>splice()</b>Следующая функция отыскивает заданное значение в массиве и возвращает массив всех индексов, где было найдено совпадение. Здесь демонстрируется, как можно использовать второй аргумент метода
<b>indexOf()</b><b>// Отыскивает все вхождения значения х в массив и возвращает </b><b>// массив индексов найденных совпадений </b><b>function findall(a. х) {</b><b> var results = [], // Возвращаемый массив индексов</b><b> len = a.length, // Длина массива, где выполняется поиск</b><b> pos = 0; // Начальная позиция поиска</b><b> while(pos < len) { // Пока остались непроверенные элементы...</b><b> pos = a.indexOf(x, pos); // Искать</b><b> if (pos === -1) break; // Если ничего не найдено, поиск завершен.</b><b> results.push(pos); // Иначе - сохранить индекс в массиве</b><b> pos = pos +1; //И продолжить поиск со следующего элемента</b><b> }</b><b> return results; // Вернуть массив индексов</b><b>}</b>Обратите внимание, что строки также имеют методы
<b>indexOf()</b><b>lastlndexOf(),</b>7.10. Тип Array
На протяжении этой главы мы не раз имели возможность убедиться, что массивы являются объектами, обладающими особыми чертами поведения. Получая неизвестный объект, иногда бывает полезно проверить, является он массивом или нет. Сделать это в реализации ECMAScript 5 можно с помощью функции Array. isArray():
<b>Array.isArray([]) // => true </b><b>Array.isArray({}) // => false</b>Однако до выхода стандарта ECMAScript 5 отличить массивы от других объектов было удивительно сложно. Оператор
<b>typeof</b><b>instanceof</b><b>[] instanceof Array // => true </b><b>({}) instanceof Array // => false</b>Проблема применения оператора
<b>instanceof</b><b>instanceof</b>Решение заключается в том, чтобы выполнить проверку атрибута
<b>class</b><b>isArray()</b><b>var isArray = Function.isArray || function(o) { </b><b> return typeof о === "object" &&</b>