Убедитесь, что для параметров задано менее двух разных значений - PullRequest
0 голосов
/ 13 июля 2020
parm1 = "val1"
parm2 = "val1"
parm3 = "val2"
parm4 = "val1"

Как я могу проверить, было ли значение присвоено более 2 раз для списка параметров (значение может быть любым и неизвестным)

-позже редактировать-

Я тоже нашел это решение

const parm1 = "val1",
  parm2 = "val1",
  parm3 = "val2",
  parm4 = "val1";

const parms = [parm1,parm2,parm3,parm4];
const list = [...new Set(parms)];
if(list.length >= 3){
  console.log("more than 3 different values")
}

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

... из вашего комментария, возможно, вы имеете в виду, что хотите проверить, есть ли более двух различных значений, выбираемых для всех параметров / входов. В этом случае вы можете использовать уникальную функцию для массива параметров на основе методов Получить все уникальные значения в массиве JavaScript (удалить дубликаты) .

Например в ES5 примерно так:

var parm1 = "val1", parm2 = "val1", parm3 = "val2", parm4 = "val1";
var parms = [parm1,parm2,parm3,parm4];

function onlyUnique(value, index, self) {return self.indexOf(value) === index;}

var uniqueParms = parms.filter(onlyUnique)
var hasMoreThanTwoDistinctParmValues = uniqueParms.length > 2;
// = false
0 голосов
/ 13 июля 2020

Что-то вроде этого? Вы можете поместить параметры в массив, отфильтровать массив по значению, а затем использовать длину отфильтрованного массива:

const parm1 = "val1",
  parm2 = "val1",
  parm3 = "val2",
  parm4 = "val1";

const parms = [parm1,parm2,parm3,parm4];

const countInArray = (arr,val) => arr.filter(x=>x===val).length;
console.log(countInArray(parms,"val1"));
// 3

Если вы проверяете много значений, укажите функцию c может быть полезно:

const countInArrayGreaterThan = (arr,count,val) => 
  arr.filter(x=>x===val).length > count;
console.log(countInArrayGreaterThan(parms, 2, "val1"));
// true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...