Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти число в массиве чисел (https://javascript.ru/forum/misc/63365-najjti-chislo-v-massive-chisel.html)

Михаил94Связь 03.06.2016 10:29

Найти число в массиве чисел
 
У меня есть массив A[1,2];
Мне нужно проверить есть ли число 2 в массиве A ?. Как это можно сделать, подскажите, пожалуйста?
Мне нужно чтобы функция возвращала результат, а не ввиде alert

Михаил94Связь 03.06.2016 10:40

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 значение. Открывается экран и я в списке должен выбрать значение. Если оно есть в датагриде, то не добавлять значение в датагрид

destus 03.06.2016 10:59

Михаил94Связь,
https://developer.mozilla.org/ru/doc...cts/Array/find

Михаил94Связь 03.06.2016 11:56

Можно пример ?

рони 03.06.2016 12:19

Михаил94Связь,
indexOf

Михаил94Связь 03.06.2016 12:34

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?

destus 03.06.2016 14:00

Цитата:

Почему мне функция возвращает undefined?
Написано же, что undefined возвращается, когда элемент не найден. Напишите сюда свой массив и искомый элемент

Botik21 03.06.2016 14:04

Телепатия сложная вещь, не все ею владеют
function A() {
	var a = [1,2,3],
		find = 3;

	return -1 != a.indexOf(find) ? find : true;
}

Михаил94Связь 03.06.2016 14:17

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;
        }
 
    }
}

Михаил94Связь 03.06.2016 14:18

Переписал по другому, но всеравно не работает. context.controls.FormComboBox.getValue().Code - это выбранное значение в комбобоксе. А это e.FormOfFinancialStatement.Code - значение, которое находится в DataGrid. Я проверяю, если выбранное значение не равно значениям которые лежат в DataGrid, то я могу добавить значение, иначе нет. Просто у меня должны быть значения которые не дублируются

Михаил94Связь 03.06.2016 15:38

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

destus 03.06.2016 16:21

А типы переменных какие? Лучше просто написать небольшой пример массива context.parameters.FormOfFinancialStatement.getVal ue(); и context.controls.FormComboBox.getValue().Code

Михаил94Связь 03.06.2016 17:54

Я прислал скрипт. Всмысле небольшой пример массива?

destus 03.06.2016 18:16

Содержимое переменной a. Через консоль можно посмотреть. Иными словами, если бы было понятно что подается на вход, то можно было бы помочь. А так это просто кусок скрипта.

Михаил94Связь 03.06.2016 19:07

a- массив. Туда приходят объекты

Botik21 04.06.2016 12:45

Если у вас 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;
}

Михаил94Связь 04.06.2016 13:00

Значение context.controls.FormComboBox.getValue().Code() равен выбранному значению в комбобоксе всегда.

Botik21 04.06.2016 13:23

Так это всё таки метод или свойство? В комбо-боксе всегда выбрано число? А что с массивом?

Михаил94Связь 04.06.2016 15:10

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 и в массиве(датагрид) есть это значение, то сохранять его не надо, иначе надо.

Botik21 05.06.2016 22:05

Мы не можем проверить значения за вас, берите отладчик и смотрите что происходит и что содержится в структурах. Примеры вам дали рабочие и на вопрос о проверке содержимого массивов ответили.


Часовой пояс GMT +3, время: 17:06.