2015-05-19 3 views
-3

Итак, я нашел некоторую информацию на этом сайте о том, как перехватить значение последнего индекса массива. У меня есть Массив с неизвестной длиной. Он строится на основе поиска результатов. Например:Netsuite Javascript Grab Last Array Value

var custid = nlapiGetFieldValue('entity'); 
    var custRecord = nlapiLoadRecord('customer', custid); 
    var itemPriceLineCount = custRecord.getLineItemCount('itempricing'); 
    for (var i = 1; i <= itemPriceLineCount; i++) { 

     var priceItemId = []; 
     priceItemId = custRecord.getLineItemValue('itempricing', 'item', i); 
     if (priceItemId == itemId) { 
      var histCol = []; 
      histCol[0] = new nlobjSearchColumn('entity'); 
      histCol[1] = new nlobjSearchColumn('totalcostestimate'); 
      histCol[2] = new nlobjSearchColumn('tranid'); 
      histCol[3] = new nlobjSearchColumn('trandate'); 
      var histFilter = []; 
      histFilter[0] = new nlobjSearchFilter('entity', null, 'is', custid); 
      histFilter[1] = new nlobjSearchFilter('item', null, 'is', itemId); 
      var histSearch = nlapiSearchRecord('invoice', null, histFilter, histCol); 
      for (var h = 0; h <= histSearch.length; h++) { 
       var itemRate = new Array(); 
       var histSearchResult = histSearch[h]; 
       itemRate = histSearchResult.getValue('totalcostestimate'); 




      } 

     } 

    } 

Теперь, когда я использую:

вар last_element = itemRate [itemRate.length - 1];

Он дает мне количество цифр/заполнителей в каждом элементе массива. Так, как и в моем примере, я знаю, что мой массив содержит значения .00 и 31.24, потому что я поставил их там для теста. Таким образом, last_element приведет к 3 и 5. Как я могу получить значение 31.24 или последний период элемента? Мне нужно значение, а не количество цифр.

+0

@ user4703663 Попробованного что. Получение результата, который мне не нужен –

+0

Не ясно, в чем вы намерены. Можно ли это изменить, чтобы мы могли лучше помочь вам. – Rockstar

+0

@Rockstar Я попробовал массив [array.length-1], и это дает мне количество символов/цифр в каждом элементе. Поэтому я заполнил свой массив двумя номерами. .00 и 31.24. Результаты будут предупреждать «3» и «5». Поэтому, если вы подсчитаете десятичную цифру и цифры, вы можете увидеть, что ее подсчет, а не возврат самого элемента или значения. Я не уверен, как заставить это вернуть последний элемент (31.24 - это результат, который я хочу) Надеюсь, что это поможет. –

ответ

0
var itemRate = new Array();// Not sure what you intend to do with this array 
var histSearchResult = histSearch[h]; 
itemRate = histSearchResult.getValue('totalcostestimate'); // but note `itemRate` is no more an array here. Its a variable having the value of `totalcostestimate` in string format 

Сейчас подходит к вашему прецеденту

/* you're trying to get the length of the string value and subtracting -1 from it. 
     So its very obvious to get those number of digits */ 

     var last_element = itemRate[itemRate.length - 1]; // returns you that index value of the string 

Если вы хотите, чтобы получить последнее значение массива Вашего поиска т.е. histSearch

Вы можете сделать что-то вроде этого

var last_element = histSearch[histSearch.length-1].getValue('totalcostestimate'); 

В качестве побочного примечания всегда рекомендуется подтвердить возвращаемую стоимость e из сохраненного результата поиска. Потому что при успешном поиске он возвращает вам объект массива, с другой стороны, если результат не будет найден, он вернет вам null.

//likely to get an error saying can't find length from null 
    for (var h = 0; h <= histSearch.length; h++) { 
    } 

Вы можете использовать что-то вроде этого

// Never enter into the loop if it is null 
     for (var h = 0; histSearch!=null && h <= histSearch.length; h++) { 
     } 
+0

Благодарим вас за эту информацию. Я новичок в кодировании, и это помогло. Оператор for, который я всегда проверяю на null, просто оставил его случайно. Мне никогда не приходилось делать что-либо с массивом до сих пор в netsuite, кроме создания списка. Список не будет заполняться, если я не поставил var myArray = []; Поэтому я просто предположил, что мне это тоже нужно. –

+0

Если это вам помогло, вы можете принять ответ. :) – Rockstar

+0

Это сработало отлично, и это такие ответы, которые заставляют меня возвращаться. Обычно я просто понимаю, как мой код отстой. Для новичков грубо спрашивать здесь об этом. Я мог бы обнять тебя! –