Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
Finding items from an array of objects based on a selected item value in JS

I have an array like this:

var array = [
    { name:"string123", value:"this", other: "that" },
    { name:"string2", value:"this", other: "that" },
    { name:"string12", value:"ths", other: "that" },
];

And now I have a string like 'string12'. Now with this string the output I want is to find the items that contains this string which is like:

var array = [
    { name:"string123", value:"this", other: "that" },
    { name:"string12", value:"ths", other: "that" },
];

Here's what I have tried:

const search = (nameKey, myArray) => {
  for (var i = 0; i < myArray.length; i++) {
    var newArr = [];
    if (myArray[i].name.slice(0, nameKey.length + 1) === nameKey) {
      newArr.push(myArray[i]);
    }
    return newArr;
  }

}

var array = [
  { name:"string123", value:"this", other: "that" },
  { name:"string2", value:"this", other: "that" },
  { name:"string12", value:"ths", other: "that" },
];

var resultObject = search("string12", array);
console.log(resultObject);

But my solution is returning a blank array. Where am I going wrong with this?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

The following things went wrong in your implementation:

  1. Move initialization outside the for loop.
  2. You don't need +1 when doing .slice().
  3. Return statement return newArr should be outside the for loop.
const search = (nameKey, myArray) => {
    var newArr = [];
  
  for (var i = 0; i < myArray.length; i++) {
    if (myArray[i].name.slice(0, nameKey.length) === nameKey) {
      newArr.push(myArray[i]);
    }
  }
    return newArr;
}

var array = [
  { name:"string123", value:"this", other: "that" },
  { name:"string2", value:"this", other: "that" },
  { name:"string12", value:"ths", other: "that" },
];

var resultObject = search("string12", array);
console.log(resultObject);
about 4 years ago · Juan Pablo Isaza Report

0

Using Array#filter and String#includes:

const arr = [ { name:"string123", value:"this", other: "that" }, { name:"string2", value:"this", other: "that" }, { name:"string12", value:"ths", other: "that" } ];

const res = arr.filter(({ name }) => name.includes('string12'));

console.log(res);

You can use String#startsWith instead of includes if you only need to check if the name starts with the string.

about 4 years ago · Juan Pablo Isaza Report

0

You could do this with Array.filter and startsWith function (docs). If you want to check string12 anywhere in name use includes instead of startsWith

var array = [
    { name:"string123", value:"this", other: "that" },
    { name:"string2", value:"this", other: "that" },
    { name:"string12", value:"ths", other: "that" },
];

const filtered = array.filter(item => item.name.startsWith("string12"));

console.log(filtered);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!