JavaScript – это мощный язык программирования, который широко используется в веб-разработке. Массивы и объекты — два самых фундаментальных типа данных в JavaScript, и они широко используются в проектах кодирования. Однако работа с массивами и объектами может быть сложной, особенно для начинающих.
В этом сообщении блога мы более подробно рассмотрим массивы и объекты в JavaScript, а также рассмотрим некоторые распространенные трудности и проблемы, с которыми сталкиваются разработчики при работе с ними. Мы рассмотрим ряд тем, от базового синтаксиса и операций до более сложных методов работы с массивами и объектами.
Независимо от того, являетесь ли вы новичком, который только начинает работать с JavaScript, или опытным разработчиком, который хочет освежить свои навыки, этот пост для вас. К концу этого руководства у вас будет глубокое понимание массивов и объектов в JavaScript, и вы будете оснащены инструментами и методами, необходимыми для решения даже самых сложных задач кодирования.
Итак, давайте погрузимся и начнем осваивать проблемы с массивами и объектами в JavaScript!
Проблемы:
Напишите функцию, которая принимает на вход массив целых чисел и возвращает наибольшую разницу между любыми двумя элементами массива.
Решение:
// Write a function that takes an array of integers as input and // returns the largest difference between any two elements in the array function findLargestDifference (...args) { let sorted = args.sort((a, b) => a - b) return sorted[sorted.length - 1] - sorted[0]; } let result = findLargestDifference(1, 45, 300, 2, 10, 23, 78); console.log(result); // Output // 299
Для заданного массива целых чисел напишите функцию, которая возвращает новый массив, где каждый элемент представляет собой сумму всех элементов исходного массива, кроме элемента с текущим индексом.
Решение:
let arr = [ 23, 55, 23, 11, 203, 211, 102, 405 ]; let findSumOfAllElements = function (arr = []) { let result = []; let sum = arr.reduce((acc, curr) => acc + curr, 0); for (let i = 0; i < arr.length; i++) { result.push(sum - arr[i]) } return result; } console.log(findSumOfAllElements(arr)); // [1010, 978, 1010, 1022, 830, 822, 931, 628]
Напишите функцию, которая принимает на вход два массива и возвращает новый массив, содержащий только те элементы, которые являются общими для обоих входных массивов.
Решение:
function commonElements (arr1, arr2) { let result = []; let cache = {}; for (let i = 0; i < arr1.length; i++) { let index = arr2.findIndex(e => arr1[i] == e); if (index !== -1 && !cache[""+arr1[i]]) { cache = { ...cache, [""+arr1[i]]: "TRUE" }; result.push(arr1[i]); } } return result; } console.log(commonElements([23, 10, 12, 56, 90, 56, 10, 12, 12], [12, 10])); // [10, 12]
Напишите функцию, которая принимает массив объектов и имя свойства в качестве входных данных и возвращает массив всех значений этого свойства в объектах.
Решение:
// Write a function that takes an array of objects // and a property name as input and returns an array of // all the values of that property in the objects. // Note: We only use plain object not nested tree obj function getValuesOfProperties(arr = [], props = "") { let result = []; if (arr.length > 0 && props) { for (let i = 0; i < arr.length; i++) { result.push(arr[i][props]) } } return result; } const collection = [{ "first_name": "Jane", "last_name": "Doe", "dob": 650451200000, "state": "California", "city": "Los Angeles", "login_count": 10, "created_date": "2022-01-01", "updated_date": "2022-02-15" }, { "first_name": "John", "last_name": "Smith", "dob": 493219200000, "state": "New York", "city": "New York City", "login_count": 5, "created_date": "2021-06-15", "updated_date": "2021-07-30" }, { "first_name": "Emily", "last_name": "Johnson", "dob": 856377600000, "state": "Texas", "city": "Houston", "login_count": 7, "created_date": "2022-03-01", "updated_date": "2022-03-23" }] console.log(getValuesOfProperties(collection, 'first_name')); // [ 'Jane', 'John', 'Emily' ]
Напишите функцию, которая принимает на вход массив объектов и пару ключ-значение и возвращает массив всех объектов, имеющих эту пару ключ-значение.
Решение:
// Write a function that takes an array of objects and a key-value pair as // input and returns an array of all the objects that have that key-value // pair. function findMatching(arr = [], props = "", value = "") { let result = []; let length = arr.length; for (let i = 0; i < length; i++) { if (arr[i][props] === value) { result.push(arr[i]) } } return result; } const collection = [{ "first_name": "Jane", "last_name": "Doe", "gender": "male", "dob": 650451200000, "state": "California", "city": "Los Angeles", "login_count": 10, "created_date": "2022-01-01", "updated_date": "2022-02-15" }, { "first_name": "John", "last_name": "Smith", "gender": "male", "dob": 493219200000, "state": "New York", "city": "New York City", "login_count": 5, "created_date": "2021-06-15", "updated_date": "2021-07-30" }, { "first_name": "Emily", "last_name": "Johnson", "gender": "female", "dob": 856377600000, "state": "Texas", "city": "Houston", "login_count": 7, "created_date": "2022-03-01", "updated_date": "2022-03-23" }] console.log(findMatching(collection, 'gender', 'female')) // Output // [{ first_name: 'Emily', last_name: 'Johnson', gender: 'female', dob: 856377600000, state: 'Texas', city: 'Houston', login_count: 7, created_date: '2022-03-01', updated_date: '2022-03-23' }]
Напишите функцию, которая принимает массив строк в качестве входных данных и возвращает объект, где ключи — это строки, а значения — количество раз, которое каждая строка появляется во входном массиве.
Решение:
// Write a function that takes an array of strings as input and returns // an object where the keys are the strings and the values are the number // of times each string appears in the input array. function groupBy(...args) { let cache = {}; let len = args.length; for (let i = 0; i < len; i++) { let props = args[i]; if (cache[props]) { cache[props] += 1; } else { cache = { ...cache, [props]: 1 } } } return cache; } console.log(groupBy("aa", "a1", "b1", "b1", "a1", "bb", "a1", "a1", "bb")); // Output // { aa: 1, a1: 4, b1: 2, bb: 2 }
Напишите функцию, которая принимает массив объектов и возвращает массив всех уникальных значений указанного свойства в объектах.
Решение:
function uniqueValues(arr = [], props = "") { let unique = []; let len = arr.length; let cache = {}; for (let i = 0; i < len; i++) { let value = arr[i][props]; if (!cache[value]) { cache = { ...cache, [value]: "TRUE" }; unique.push(value) } } return unique; } const collection = [{ "first_name": "Evelyn", "last_name": "Nguyen", "age": 25, "mobile_no": "7643908127" }, { "first_name": "Dennis", "last_name": "Foster", "age": 36, "mobile_no": "7643908127" }, { "first_name": "Ayaan", "last_name": "Sharma", "age": 21, "mobile_no": "9123456780" }, { "first_name": "Sophie", "last_name": "Hernandez", "age": 44, "mobile_no": "7643908127" }]; console.log(uniqueValues(collection, 'mobile_no')); // Output // [ '7643908127', '9123456780' ]
Советы для начинающих:
Пожалуйста, используйте ChatGPT для создания проблем с кодированием, связанных с Javascript, и попытайтесь решить их самостоятельно.
Спасибо