Найти число в массиве чисел
У меня есть массив A[1,2];
Мне нужно проверить есть ли число 2 в массиве A ?. Как это можно сделать, подскажите, пожалуйста? Мне нужно чтобы функция возвращала результат, а не ввиде alert |
var b = false; a.forEach(function (item) { if (context.controls.FormComboBox.getValue().Code != item.FormOfFinancialStatement.Code) b = true; }); return b; } return true; a - это массив. У меня есть датагрид где лежит 2 значения. Я хочу добавить 3 значение. Открывается экран и я в списке должен выбрать значение. Если оно есть в датагриде, то не добавлять значение в датагрид |
Михаил94Связь,
https://developer.mozilla.org/ru/doc...cts/Array/find |
Можно пример ?
|
Михаил94Связь,
indexOf |
function A() { var a = context.parameters.FormOfFinancialStatement.getValue(); if (a != undefined) { var result = a.find(function (item) { return context.controls.FormComboBox.getValue().Code != item.FormOfFinancialStatement.Code }); } else { return true; } }Почему мне функция возвращает undefined? |
Цитата:
|
Телепатия сложная вещь, не все ею владеют
function A() { var a = [1,2,3], find = 3; return -1 != a.indexOf(find) ? find : true; } |
function GetCompanyProfile988ResponseAdditionalDocumentsViewOnSaveClick(context, args) { if (validateObligatoryFields() && A()) { context.global.executeAction( context, { SaveAction: { DestinationValue: { Source: 'MainDataSource' } } } ); } else { toastr.warning('dadas') } function validateObligatoryFields() { var additionalDocuments = context.dataSources.MainDataSource.getSelectedItem(); var obligatoryFields = [ { field: additionalDocuments.FormOfFinancialStatement, caption: 'Форма бухгалтерской отчетности' }, { field: additionalDocuments.NameOfFinancialStatement, caption: 'Наименование формы бухгалтерской отчетности в произвольной форме' }, { field: additionalDocuments.Attachment, caption: 'Прикрепленный файл' } ]; return ValidateGkhObligatoryFields(obligatoryFields); } function A() { var a = context.parameters.FormOfFinancialStatement.getValue(); if (a != undefined) { return a.reduce(function(p, e, i){ if(p >= 0) return p; return (context.controls.FormComboBox.getValue().Code != e.FormOfFinancialStatement.Code) ? i : p; }, -1) } else { return true; } } } |
Переписал по другому, но всеравно не работает. context.controls.FormComboBox.getValue().Code - это выбранное значение в комбобоксе. А это e.FormOfFinancialStatement.Code - значение, которое находится в DataGrid. Я проверяю, если выбранное значение не равно значениям которые лежат в DataGrid, то я могу добавить значение, иначе нет. Просто у меня должны быть значения которые не дублируются
|
Ребят, помогите, пожалуйста. Вроде бы простая задака, а я уже с ней очень долго бьюсь
|
А типы переменных какие? Лучше просто написать небольшой пример массива context.parameters.FormOfFinancialStatement.getVal ue(); и context.controls.FormComboBox.getValue().Code
|
Я прислал скрипт. Всмысле небольшой пример массива?
|
Содержимое переменной a. Через консоль можно посмотреть. Иными словами, если бы было понятно что подается на вход, то можно было бы помочь. А так это просто кусок скрипта.
|
a- массив. Туда приходят объекты
|
Если у вас A() всё равно возвращает NaN, значит одно из значений возвращается как NaN при сравнение оно не равно ничему и будет возвращаться функцией — проверьте содержимое массива и значение context.controls.FormComboBox.getValue().Code
function A() { var a = context.parameters.FormOfFinancialStatement.getValue(); if (a != undefined) { for (var i = a.length - 1; i >= 0; --i) { if (a[i].FormOfFinancialStatement.Code != context.controls.FormComboBox.getValue().Code) return i; } return -1; } return true; } |
Значение context.controls.FormComboBox.getValue().Code() равен выбранному значению в комбобоксе всегда.
|
Так это всё таки метод или свойство? В комбо-боксе всегда выбрано число? А что с массивом?
|
context.parameters.FormOfFinancialStatement.getVal ue() - это массив
Я по нему должен пройтись и получить значения исходя из условия if (a[i].FormOfFinancialStatement.Code != context.controls.FormComboBox.getValue().Code) context.controls.FormComboBox.getValue().Code - выбранное значение a[i].FormOfFinancialStatement.Code - элемент массива Допустим, если в комбобоксе я выбрал 1 и в массиве(датагрид) есть это значение, то сохранять его не надо, иначе надо. |
Мы не можем проверить значения за вас, берите отладчик и смотрите что происходит и что содержится в структурах. Примеры вам дали рабочие и на вопрос о проверке содержимого массивов ответили.
|
Часовой пояс GMT +3, время: 17:06. |