How do I fix this? make it pass runtime exceeded

Link to the challenge:

It passes all the test requirements, however it shows runtime exceeded. I believe because it is O^3 it is being rejected:

my code:

 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
var threeSum = function(nums, target) {
  let holder=[]
    for(var i=0;i<nums.length-2;i++){
      // console.log(nums[i], "=i")
        for(var j=i+1;j<nums.length-1;j++){
         // console.log(nums[j], "=j")
          for(var k=j+1;k<nums.length;k++){
           // console.log(nums[k], "=k")
             let a=nums[i]
             let b=nums[j]
             let c=nums[k]
  const setArray = new Set( => JSON.stringify(x)))
  const unique = [...setArray].map(x => JSON.parse(x))
  return unique;

how do i fix it how do I make it faster than O^3, as it is currently not being accepted. I think the answer lies here somewhere in this part of the curriculum, but how exactly,?

The brute force method algorithm you are using as you discovered is exponentially slow. They may have time limitations.

Think about a different approach to the problem where you could take advantage of an object lookup to avoid having to go over the the array so many times.

can you please expound on that. Ive been thinking about it since yesterday, and ive not solved it. I do not want to cheat and look at another persons solution.

The challenge states that it wants every single possible combination that results in the specified value…although it does want them to be unique. How is it possible for you to do it without having to iterate over every possible combination? how will you be certain you wont miss a combination? Can you please give another hint or a little more advice. Ive not been trained in this. maybe Im wrong, but Ive not seen something in the curriculum which explains how to utilize an object or some structure to avoid iterations, and why it would work.