Поиск строкового элемента в массиве с целыми числами, используя lodash, не работает - PullRequest
2 голосов
/ 01 октября 2019

Вот мой код, я использую vuejs:

pins: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0], //my data

isThisPin(pin){
    return _.includes(this.pins, pin);
}

console.log(this.isThisPin('X')); //it returns true

В основном я пытаюсь угадать, если выбранный вывод не включен в выводы, я ожидаю вернуть его как ложный, но этопросто продолжайте возвращаться как true.

Я использую неправильную функцию?

Ответы [ 5 ]

1 голос
/ 01 октября 2019

Если ваш массив pins настолько прост, вам ничего не нужно, только ванильный JavaScript.

new Vue({
  el: "#app",
  data: {
    pins: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    pin: '',
    result: ''
  },
  methods: {
    isThisPin() {
      if (this.pin) {
        this.result = this.pins.includes(Number(this.pin))
      } else {
        this.result = ''
      }
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <label>IS THIS PIN: <input type="number" v-model="pin" @input="isThisPin"></label>
  <br /> RESULT: {{result}}
</div>
1 голос
/ 01 октября 2019

Если вы хотите использовать lodash, вы используете _.contains также фрагмент кода работает с lodash

_.contains([1, 2, 3], 'X') // false

var pins = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
//alert(_.includes(pins, 'X'));

function checkPin(pin){
  return _.includes(pins,pin )
}

alert(checkPin('X'));
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
1 голос
/ 01 октября 2019

Этого можно достичь с помощью обычного JavaScript:

var fruits = ["Banana", "Orange", "Apple", "Mango"]
var a = fruits.indexOf("Apple")

Возвращает индекс элемента или -1, если не найден

или

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");

Возвращает true илиложь

0 голосов
/ 01 октября 2019

Дело в том, что ваш фрагмент работает, а _.includes работает - запустите фрагмент, чтобы проверить. Поэтому проблема должна быть где-то еще.

const pins = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];

function isThisPin(pin) {
  return _.includes(this.pins, pin);
}

console.log(this.isThisPin('X'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
0 голосов
/ 01 октября 2019

Вы можете использовать Array.prototype.findIndex () , как показано ниже

var pins = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
console.log( pins.findIndex(e => e == 'x') != -1 );
console.log( pins.findIndex(e => e == 9) != -1 );
...