Arrayzing - The JavaScript array cheatsheet
This is a work-in-progress cheatsheet for JS arrays. Please feel free to leave a comment if this has helped you or you would like to suggest anything.
var meals = ['breakfast', 'lunch', 'dinner'] ;
Keeping references intact.
var meals = ['breakfast', 'lunch', 'dinner'];
meals.splice(0, meals.length);
or
var meals = ['breakfast', 'lunch', 'dinner'];
meals.length = 0
var meals = ['breakfast', 'lunch', 'dinner'];
var copy = meals.slice();
// ['breakfast', 'lunch', 'dinner']
var meals = ['breakfast', 'lunch', 'dinner'];
meals[meals.length - 1];
// 'dinner'
Or
var meals = ['breakfast', 'lunch', 'dinner'];
meals.slice(-1)[0];
// 'dinner'
var meals = ['breakfast', 'lunch', 'dinner'];
meals.shift();
// 'breakfast'
meals;
// ['lunch', 'dinner']
var meals = ['breakfast', 'lunch', 'dinner'];
meals.pop();
// 'dinner'
meals;
// ['breakfast', 'lunch'];
var meals = ['lunch', 'dinner'];
meals.unshift('breakfast');
// 3 - the array length
meals;
// ['breakfast', 'lunch', 'dinner']
var meals = ['breakfast', 'lunch', 'dinner'];
meals.push('supper');
// 2
meals;
// ['breakfast', 'lunch', 'dinner', 'supper'];
var meals = ['breakfast', 'lunch', 'dinner'];
meals[1] = 'brunch';
// ['breakfast', 'brunch', 'dinner'];
Or
var meals = ['breakfast', 'lunch', 'dinner'];
meals.splice(1, 1, 'brunch');
var meals = ['breakfast', 'lunch', 'dinner'];
meals.splice(1, 0, 'brunch', 'more brunch');
// ['breakfast', 'brunch', 'more brunch', 'lunch', 'dinner']
var meals = ['breakfast', 'lunch', 'dinner'];
meals.splice(1, 1);
// ['lunch']
meals;
// ['breakfast', 'dinner']
var meals = ['breakfast', 'lunch', 'dinner'];
meals.splice(1, 2);
// ['lunch', 'dinner']
meals;
// ['breakfast']
var meals = ['breakfast', 'lunch', 'dinner'];
meals.reverse();
// ['dinner', 'lunch', 'breakfast'];
var meals = ['breakfast', 'lunch', 'dinner'];
meals.join(' AND ');
// 'breakfast AND lunch AND dinner'
var meals = ['dinner', 'supper', 'breakfast', 'lunch'];
meals.sort();
// ['breakfast', 'dinner', 'lunch', 'supper']
var numbers = [1438,2605,794,3947,6241,11745,2585];
numbers.sort(function(a, b) {
return a - b;
});
// [794,1438,2585,2605,3947,6241,11745]
var dayTimeMeals = ['breakfast', 'lunch'];
var nightTimeMeals = ['merienda', 'dinner'];
var allTheMeals = dayTimeMeals.concat(nightTimeMeals);
// ['breakfast', 'lunch', 'merienda', 'dinner']
var meals = ['breakfast', 'lunch', 'dinner', 'supper'];
nightTimeMeals = meals.slice(2,4);
// ['dinner', 'supper']
var meals = ['breakfast', 'lunch', 'dinner'];
var type = ['king', 'prince', 'pauper'];
meals.map(function(item, i) {
return item + ' like a ' + type[i];
});
// ["breakfast like a king", "lunch like a prince", "dinner like a pauper"]
var meals = ['breakfast', 'lunch', 'dinner', 'supper'];
meals.every(function(item){ return item.length > 0 });
// true
meals.every(function(item){ return item.length > 6 });
// false
var meals = ['breakfast', 'lunch', 'dinner', 'supper'];
meals.some(function(item){ return item === 'lunch';});
// true
meals.some(function(item){ return item === 'burgers!!';});
//false
var meals = ['breakfast', 'lunch', 'dinner', 'supper'];
meals.forEach(function(currentValue, index, arr){
console.log(index, currentValue, arr);
});
var meals = ['breakfast', 'lunch', 'dinner', 'supper'];
meals.filter(function(item) {
return item !== 'breakfast';
});
// ['lunch', 'dinner', 'supper'];
var meals = ['breakfast', 'lunch', 'dinner'];
Array.isArray(meals)
// true
var meals = ['breakfast', 'lunch', 'dinner'];
function isArray(arr) {
return !!(Object.prototype.toString.call(arr) === '[object Array]');
}
isArray(meals);
// true
var meals = ['breakfast', 'elevenses', 'brunch'];
meals.shift();
meals.push('lunch');
// ['elevenses', 'brunch', 'lunch']
meals.shift()
meals.push('afternoon tea');
// ['brunch', 'lunch', 'afternoon tea']
// ... and so on ...
var meals = ['breakfast', 'elevenses', 'brunch'];
meals.indexOf('brunch');
// 2
var meals = ['breakfast', 'elevenses', 'brunch'];
function inArray(arr, item){
var found = -1,
i = arr.length;
while(--i >= 0) {
if(arr[i] === item){
found = i;
break;
}
}
return found;
}
inArray(meals, 'brunch');
// 2 - the index of the item in the array
inArray(meals, 'dinner');
// -1
function randomiseArray(arr) {
var buffer = [], start;
for(var i = arr.length; i >= arr.length && i > 0;i--) {
start = Math.floor(Math.random() * arr.length);
buffer.push(arr.splice(start, 1)[0])
};
return buffer;
}
randomiseArray([0,1,2,3,4]);
// [2,1,0,3,4]
randomiseArray([0,1,2,3,4]);
// [3,2,1,4,0]
randomiseArray([0,1,2,3,4]);
// [1,2,4,0,3]
var meals = [
{type: 'breakfast', name: 'Full English', calories: 1500},
{type: 'breakfast', name: 'Colacao', calories: 260},
{type: 'breakfast', name: 'Croissant and jam', calories: 520},
{type: 'breakfast', name: 'Granola with Greek yoghurt and blueberries', calories: 680},
{type: 'brinner', name: 'Shepherds Pie with strawberry yoghurt', calories: 915},
{type: 'brinner', name: 'Milky Porridge with beef and green beans', calories: 875},
{type: 'dinner', name: 'Phad Thai', calories: 750},
{type: 'dinner', name: 'Chicken Katsu curry and rice', calories: 830},
];
function getMealsByMaxCalories(meals, maxCalories, dailyAllowance) {
return meals
.filter(function(meal) {
return meal.calories <= maxCalories;
})
.map(function(meal) {
return {
name: meal.name,
calories: meal.calories,
percentageOfDailyAllowance: meal.calories / dailyAllowance * 100
}
});
}
getMealsByMaxCalories(meals, 850, 2000);
/*
[
{
"name": "Colacao",
"calories": 260,
"percentageOfDailyAllowance": 13
},
{
"name": "Croissant and jam",
"calories": 520,
"percentageOfDailyAllowance": 26
},
{
"name": "Granola with Greek yoghurt and blueberries",
"calories": 680,
"percentageOfDailyAllowance": 34
},
{
"name": "Phad Thai",
"calories": 750,
"percentageOfDailyAllowance": 37.5
}
]
*/
The MIT License (MIT)
Copyright (c) 2015 Justin Perry
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.