I have a 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 blank array. Where am i going wrong with this?
>Solution :
The following things went wrong in your implementation:
- Move initialization outside the
forloop. - You don’t need +1 when doing
.slice(). - Return statement
return newArrshould be outside theforloop.
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);