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
  • 156
  • 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
  • 30,747
  • 12
  • 76
  • 133
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
  • 663
  • 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
  • 5,676
  • 16
  • 65
  • 141