Question: I looking return default value for new struct, without value, this is my current struct :

```
// Campaign represents a email campaign
type Campaign struct {
    ID             bson.ObjectId   `json:"id" bson:"_id"`
    CampaignName   string          `json:"campaign_name" bson:"campaign_name"`
    FromName       []string        `json:"from_name" bson:"from_name"`
    FromEmail      string          `json:"from_email" bson:"from_email"`
    ReplyEmail     string          `json:"reply_email" bson:"reply_email"`
    Subject        []string        `json:"subject" bson:"subject"`
    BodyText       string          `json:"body_text" bson:"body_text"`
    BodyHTML       string          `json:"body_html" bson:"body_html"`
    SMTPList       bson.ObjectId `json:"smtp_list" bson:"smtp_list"`
    EmailList      bson.ObjectId `json:"email_list" bson:"email_list"`
    DateCreated    time.Time       `json:"date_created" bson:"date_created"`
    DateUpdated    time.Time       `json:"date_updated" bson:"date_updated"`
    DateSendFinish time.Time       `json:"date_send_finish" bson:"date_send_finish"`
    OwnerID        bson.ObjectId   `json:"owner_id" bson:"owner_id"`
    Opens          int             `json:"opens" bson:"opens"`
    Clicks         int             `json:"clicks" bson:"clicks"`
    Status         string          `json:"status" bson:"status"`
}

```

I want to return Status = "draft"
How i can do this ?

Answer: 
You need to take a copy of `current` and you need to return the array with the values. Unfortunately, you add too much zeros to the result set.

Therefore I suggest to add a value at the place of calling the function `find`.

You could omit `target` in `find`, because you have already a closure over it.

```js
function findSolution(target, arr) {
    function getSum(total, num) {
        return total + num;
    }

    function find(current, i) {
        if (current.reduce(getSum, 0) === target) { // initialValue for empty arrays
            return current;
        }
        if (i >= arr.length) {
            return null;
        } 
        return find(current.concat(arr[i]), i + 1)
            || find(current, i + 1);
    }

    return find([], 0);
}

console.log(findSolution(23, [4, 6, 10, 1, 3]));
```
You need to calculate all possible combinations of the value array to find all solutions:

```js
function findSolution(target, arr) {

 const combinations = set => set.reduce(
    (subsets, value) => [
      ...subsets,
      ...subsets.map(subset => [value, ...subset])
    ], 
    [ [] ]
  )

  const getSum = (total, num) => total + num

  return combinations(arr).find(current =>
    current.reduce(getSum, 0) === target
  )
}

console.log(findSolution(23, [4, 6, 10, 1, 3]))
```