1

I don't find the solution on following problem. The index keeps returning -1 instead of 1 in this case.

Anyone that can help me out?

let allRules = [{ruleName: "a"}, {ruleName: "b"}, {ruleName: "c"}]
let name = "b"
let index = allRules.findIndex(x => {
  console.log(x.ruleName)
  x.ruleName === name
})
console.log(index)
D.Dsn
  • 176
  • 10

3 Answers3

2

You need to use return keyword as you have {} in your callback method:

let allRules = [{ruleName: "a"}, {ruleName: "b"}, {ruleName: "c"}]
let name = "b"
let index = allRules.findIndex(x => {
  console.log(x.ruleName)
  return x.ruleName == name
})
console.log(index)

An example without return statement:

let allRules = [{ruleName: "a"}, {ruleName: "b"}, {ruleName: "c"}]
let name = "b"
let index = allRules.findIndex(x => x.ruleName == name)
console.log(index)
StepUp
  • 36,391
  • 15
  • 88
  • 148
1

You need to add return.

let allRules = [{ruleName: "a"}, {ruleName: "b"}, {ruleName: "c"}]
let name = "b"
let index = allRules.findIndex(x => {
  console.log(x.ruleName)
  return x.ruleName === name
})
console.log(index)
Afia
  • 683
  • 5
  • 17
1

As @Nick Parsons in comments said you need to return something.

let allRules = [{ruleName: "a"}, {ruleName: "b"}, {ruleName: "c"}]
let name = "b"
let index = allRules.findIndex(x => {
  console.log(x.ruleName);
  return x.ruleName === name;
})
console.log(index)
demo
  • 6,038
  • 19
  • 75
  • 149