/*
 * Joining string-type elements
 */

const fruits = ["apple", "banana", "strawberry"];

console.log(fruits.join());
// "apple,banana,strawberry"

console.log(fruits.join(""));
// "applebananastrawberry"

console.log(fruits.join(" "));
// "apple banana strawberry"

console.log(fruits.join(", "));
// "apple, banana, strawberry"

console.log(fruits.join("-"));
// "apple-banana-strawberry"

console.log(fruits.join("+"));
// "apple+banana+strawberry"


/*
 * Joining number-type elements
 */

const numbers = [1, 2, 3];

console.log(numbers.join());
// "1,2,3"

console.log(numbers.join(""));
// "123"

console.log(numbers.join("-"));
// "1-2-3"


/*
 * Joining boolean-type elements
 */

const bool = [true, false];

console.log(bool.join());
// "true,false"

console.log(bool.join(""));
// "truefalse"

console.log(bool.join("-"));
// "true-false"


/*
 * Joining object-type elements
 */

const fruitsObject = ["apple", "banana", { name: "strawberry", color: "red" }];

console.log(fruitsObject.join());
// "apple,banana,[object Object]"

console.log(fruitsObject.join(""));
// "applebanana[object Object]"

console.log(fruitsObject.join("-"));
// "apple-banana-[object Object]"


/*
 * Joining array elements
 */

const matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

console.log(matrix.join());
// "1,2,3,4,5,6,7,8,9"

console.log(matrix.join(""));
// "1,2,34,5,67,8,9"

console.log(matrix.join("-"));
// "1,2,3-4,5,6-7,8,9"


/*
 * Sparse arrays
 */

const sparseArr = [1, , 3, undefined];

console.log(sparseArr.join());
// "1,,3,"

console.log(sparseArr.join(""));
// "13"

console.log(sparseArr.join("-"));
// "1--3-"
arr.join()
arr.join(separator)
const emptyArr = [];

console.log(emptyArr.join(","));
// "" => returns an empty string
const arr = [undefined, 1, null];

console.log(arr.join(",")); // ",1,"
const arr = ["sandwich"];

console.log(arr.join(", "));
// "sandwich"
const numbers = [1, 2, 3, 4, 5];
const reversedString = numbers.reverse().join("");

console.log(reversedString); // "54321"
const vegetables = ["carrot", "broccoli", "potato"];
const htmlList = "<ul><li>" + vegetables.join("</li><li>") + "</li></ul>";

console.log(htmlList);
// "<ul><li>carrot</li><li>broccoli</li><li>potato</li></ul>"
// An array containing objects
const people = [
    { name: "Alice", age: 25 },
    { name: "Bob", age: 30 },
    { name: "Carol", age: 28 }
];

// Create strings by combining the name and age from each object
const personStrings = people.map(function(person) {
    return "<li>" + person.name + " is " + person.age + " years old.</li>";
});

// Wrap the joined strings with a <ul> tag to create a complete list
const resultString = "<ul>" + personStrings.join("") + "</ul>";

console.log(resultString);
// "<ul><li>Alice is 25 years old.</li><li>Bob is 30 years old.</li><li>Carol is 28 years old.</li></ul>"
const baseURL = "https://api.example.com";

const params = {
    category: "books",
    limit: 10,
    sort: "desc"
};

// Convert object properties into a query string
const queryString = Object.keys(params)
    .map(key => key + "=" + encodeURIComponent(params[key]))
    .join("&");

const endpoint = `${baseURL}/search?${queryString}`;

console.log(endpoint);
// "https://api.example.com/search?category=books&limit=10&sort=desc"