array = ["Bilbo", "Gandalf", "Nazgul"];
array.forEach((item, index, array) =>{
    console.log(`${item} is at index ${index} in ${array}`)
});

console.log(`arr.indexOf(Bilbo): ${array.indexOf("Bilbo")}`)
console.log(`arr.indexOf(Bilbo): ${array.includes("Bilbo")}`)

let fruits = ['Apple', 'Orange', 'Apple']
console.log(`fruits.indexOf('Apple'): ${fruits.indexOf('Apple')}`)
console.log(`fruits.lastIndexOf('Apple'): ${fruits.lastIndexOf('Apple')}`)

// arr.find(fn)
let users = [
    {id: 1, name: "xingzhesun"},
    {id: 2, name: "zhexingsun"},
    {id: 3, name: "sunxingzhe"},
];

let user1 = users.find(item => item.id == 1);
let user2 = users.findLastIndex(item => item.id == 1);
console.log(user1.name);
console.log(user2.name);

// arr.filter
let someUsers = users.filter(user => user.id < 3);
console.log(someUsers)
someUsers = users.filter(function(item, index, array){
    if (item.id < 3){
        return true;
    }
})
console.log(someUsers);

// arr.map(fn)
let lengths = array.map(item=>item.length);
console.log(lengths);

// arr.sort(fn)
function compare(a, b){
    if (a > b) return 1;
    if (a == b) return 0;
    if (a < b) return -1;
}

arr = [15, 2 ,1];
console.log(`arr.sort(): ${arr.sort(compare)}`);
console.log(`arr.sort(): ${arr.sort((a,b) => a - b)}`);

let countries = ['Österreich', 'Andorra', 'Vietnam'];
console.log(countries.sort((a,b) => a.localeCompare(b)))

// arr.reverse()
countries = countries.reverse()
console.log(countries)

// arr.split() and arr.join()
let names = "Bilbo, Gandalf, Nazgul";

let nameLists = names.split(', ');

for(let name of nameLists){
    console.log(`A message to ${name}`);
}
// [LOG - 6/16/24 21:32:14] "A message to Bilbo"
// [LOG - 6/16/24 21:32:14] "A message to Gandalf"
// [LOG - 6/16/24 21:32:14] "A message to Nazgul"

nameLists = names.split(', ', 2);
for(let name of nameLists){
    console.log(`A message to ${name}`);
}
// [LOG - 6/16/24 21:32:14] "A message to Bilbo"
// [LOG - 6/16/24 21:32:14] "A message to Gandalf"

console.log(`nameLists: ${nameLists.join('; ')}`)
// [LOG - 6/16/24 21:33:45] "nameLists: Bilbo; Gandalf"


// arr.reduce(fn) arr.reduceRight(fn)
let numbers = [1,2,3,4,5]
console.log(numbers.reduce(function(sum, current){
    return sum + current;
}, 0));
console.log(numbers.reduce((sum, cur) => sum + cur, 0));
console.log(numbers.reduceRight((sum, cur) => sum + cur, 0));

// Array.isArray()
console.log(Array.isArray(countries))

function camelize(str){
    words = str.split('-')
    for(let i = 1; i < words.length; i++){
        words[i][0] = words[i][0].toUpperCase();
        console.log(words[i])
    }
    return words.join('');
}
console.log(camelize("background-color"))
console.log(camelize("list-style-image"))
console.log(camelize("-webkit-translation"))