JavaScript solutions (2), 100%/39%, 68ms, also a 1-liner
Answer 1 - 100%/39%, 68ms:\n- Create a for loop that iterates through the nums array.\n- Inside the loop use an if statement to check if  nums[i] % 10 === i % 1
**Answer 1 - 100%/39%, 68ms:**\n- Create a for loop that iterates through the `nums` array.\n- Inside the loop use an if statement to check if  `nums[i] % 10 === i % 10`. If true, return `i`.\n\t- example\n\t\t- nums = [ 3, 3, 5, 1, 8, 2, 3, 0, 1, 2, 3, 7, 6, 9, **4**, 1 ]\n\t\t- when `i = 14`, the loop will compute if `4 % 10 === 14 % 10` which is true as both sides will equal 4.\n\t\t- return `i`, which is 14.\n- If the loop doesn\'t return a value, return -1.\n\n**Solution:**\n\n```\nvar smallestEqual = function(nums) {\n    for(let i = 0; i < nums.length; i++){ if (nums[i] % 10 === i % 10) { return i } }\n    return -1\n};\n```\n\n---\n**One-Liner - 85%/39%, 88ms:**\n\n- Start by mapping to a new array. If `nums[i] % 10 === i % 10` map `i`, else map 100\n\t- `...nums.map((x, i) => (nums[i] % 10 === i % 10) ? i : 100 )`\n- Find the min of the newly mapped array with Math.min()\n\t- `Math.min(  ...nums.map((x, i) => (nums[i] % 10 === i % 10) ? i : 100 )`\n- Place the value into an array and filter for it being less than 100. If the min value from the previous step is 100 that means none of the indexed numbers qualified for the result, filtering out 100 will leave us with an empty array.\n\t- `[ Math.min(  ...nums.map((x, i) => (nums[i] % 10 === i % 10) ? i : 100 ) ) ].filter(x => x < 100)`\n- Inside a Math.max() function spread the new array and incude a -1. If there was an indexed number in the array that will be the answer returned, if not then we will return -1.\n\t- `Math.max( ...[ Math.min(  ...nums.map((x, i) => (nums[i] % 10 === i % 10) ? i : 100 ) ) ].filter(x => x < 100) , -1)`\n\n```\nvar smallestEqual = (nums) => Math.max( ...[ Math.min(  ...nums.map((x, i) => (nums[i] % 10 === i % 10) ? i : 100 ) ) ].filter(x => x < 100) , -1);\n```
['JavaScript']