String data manipulated given CSV variables The Requirements:

List the expensable items sorted by date and location given two variables: 'categories' and 'expenses'. The Categories variable provides the following information in order: Category ID, Category Name, and whether the category is expensable (Y/N). The Expenses variable  provides the following information in order: Location, Date, Item Description, Cost, and Category Code. Each line should be displayed in the format "DATE: LOCATION - $TOTAL". 

I put it together in a single JavaScript executable. 

The code:

// Input Values
var categories = "CFE,Coffee,Y\nFD,Food,Y\nPRS,Personal,N";
var expenses = "Starbucks,3/10/2018,Iced Americano,4.28,CFE\nStarbucks,3/10/2018,Nitro Cold Brew,3.17,CFE\nStarbucks,3/10/2018,Souvineer Mug,8.19,PRS\nStarbucks,3/11/2018,Nitro Cold Brew,3.17,CFE\nHigh Point Market,3/11/2018,Iced Americano,2.75,CFE\nHigh Point Market,3/11/2018,Pastry,2.00,FD\nHigh Point Market,3/11/2018,Gift Card,10.00,PRS";

var AcceptableExpenses = GetAcceptableExpenses(GetAcceptableCategories(categories), expenses)

AcceptableExpenses.forEach (AcceptableExpense =&gt;{
    console.log(AcceptableExpense.join(''))
})

function GetAcceptableExpenses(AcceptableCategories, expenses){
    var ExpensesList = expenses.split("\n")
    var AcceptableExpenseTotals = []
    var categoryIndex = 4
    var venderIndex = 0
    var dateIndex = 1
    var priceIndex = 3

    var venderDate = []
    ExpensesList.forEach(expense =&gt; {
        var expenseItemized = expense.split(',')

        if ((categoryIndex &lt; expenseItemized.length) &amp;&amp; IsExpenseItemAcceptable(AcceptableCategories, expenseItemized[categoryIndex])){
            venderDate = [expenseItemized[dateIndex], ": ", expenseItemized[venderIndex], " - $"].join('')

            if ( IsVenderDateIncluded(AcceptableExpenseTotals, venderDate) ){
                UpdatePrice(AcceptableExpenseTotals, venderDate, expenseItemized[priceIndex] )
            }
            else{
                AcceptableExpenseTotals.push([venderDate, expenseItemized[priceIndex] ])
            }
        }
    })
    return AcceptableExpenseTotals
}
function IsVenderDateIncluded(AcceptableExpenseTotals, venderDate){
    var venderDateIndex = 0
    var IsIncluded = false

    AcceptableExpenseTotals.forEach( AcceptableExpenseTotal =&gt;{
        if (AcceptableExpenseTotal[venderDateIndex] === venderDate){
            IsIncluded = true
        }
    })

    return IsIncluded
}

function UpdatePrice(AcceptableExpenseTotals, venderDate, price ){
    var venderDateIndex = 0
    var priceIndex = 1
    AcceptableExpenseTotals.forEach( AcceptableExpenseTotal =&gt;{
        if (AcceptableExpenseTotal[venderDateIndex] === venderDate){
            AcceptableExpenseTotal[priceIndex] = parseFloat( price) + parseFloat(AcceptableExpenseTotal[priceIndex])
            return
        }
    })
}

function IsExpenseItemAcceptable(AcceptableCategories, category ){
    var IsAcceptable = false
    AcceptableCategories.forEach(AcceptableCategory =&gt; {
        if (AcceptableCategory === category){
            IsAcceptable = true
        }
    })
    return IsAcceptable
}

function GetAcceptableCategories(categories){
    var categoryList = categories.split("\n")
    var AcceptableCategory = []

    for (i = 0; i &lt; categoryList.length; i++){
        var categoryData = categoryList[i].split(',');
        var locationOf_IsExpensible = 2;
        var locationOf_Category = 0;
        if (locationOf_IsExpensible &lt; categoryData.length ){
            if (categoryData[locationOf_IsExpensible]==="Y"){
                AcceptableCategory.push(categoryData[locationOf_Category])
            }
        }
    }
    return AcceptableCategory
}
This code is a decent start, as it uses ES6 features like arrow functions. However it could take advantage of many Javascript features - e.g. IsExpenseItemAcceptable could be reduced to a single line using Array.includes(). Additionally, the index variables can be eliminated using the ES6 feature Destructuring assignment - specifically array destructuring.
Instead of lines like

var expenseItemized = expense.split(',')

if ((categoryIndex &lt; expenseItemized.length) &amp;&amp; IsExpenseItemAcceptable(AcceptableCategories, expenseItemized[categoryIndex])){


Destructuring assignment can greatly simplify this to something like:
const [vendor, date, item, price, category] = expense.split(',');   
if (category &amp;&amp; IsExpenseItemAcceptable(AcceptableCategories, category)){

Not only is that condition shorter, it doesn't require the use of the index and is more readable (and a typo on the word &quot;vendor&quot; was fixed).
In the example above const was used instead of var. It is recommended that const be the default keyword for initializing variables. If assignment is required, then use let.
The function GetAcceptableCategories could be simplified using Array.reduce(), similar to Array.forEach().
The data structure could be changed from an array to a plain object - i.e. {} to provide a mapping of vendor and date combinations to prices. This would allow the elimination of the functions updatePrice and IsVenderDateIncluded because the loop could be simplified to:
if (category &amp;&amp; IsExpenseItemAcceptable(AcceptableCategories, category)){
    const vendorDate = [date, &quot;: &quot;, vendor, &quot; - $&quot;].join('')
    if (vendorDate in AcceptableExpenseTotals) {
        AcceptableExpenseTotals[vendorDate] += parseFloat(price);
    }
    else{
        AcceptableExpenseTotals[vendorDate] = parseFloat(price);
    }
}

This would require reformatting the output - e.g.
for (const [vendorDate, price] of Object.entries(AcceptableExpenses)) {
    console.log(vendorDate, price);
}