Если значения массива (взятые из поля NetSuite) пусты, удалить из массива? - PullRequest
0 голосов
/ 17 сентября 2018

Попытка собрать интеграцию API, используя netsuite / celigo и стороннюю торговую площадку. большая часть JSON была в порядке, но возникли проблемы с получением фотографий для работы. они должны быть переданы в виде массива, но каждый из наших элементов имеет разное количество фотографий. У меня есть доступ к выражениям SQL в netsuite и своего рода «построителю документов JSON» с несколькими встроенными в Celigo функциями.

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

  "photos": ["url.jpg", "url2.jpg", "", "", ],

Сторона «построителя документов» выглядит следующим образом (похоже на синтаксис Celigo), опять же, множество функций доступны, но не используются, и не уверены, какой использовать.

 "photos":["{{this.0.Photo1}}", "{{this.0.Photo2}}", "{{this.0.Photo3}}", "{{this.0.Photo4}}",],

(где поля netsuite для фотографий 3 и пусты)

Я попытался просто объединить все URL, но тогда они не будут в правильном формате массива, и та же проблема все еще применяется к дополнительным символам, где поля пустые. Я должен избегать изменения способа, которым данные фактически вводятся в поле NS, так как это может испортить наши другие интеграции.

1 Ответ

0 голосов
/ 17 сентября 2018

учитывая, что у вас есть это: "photos": ["url.jpg", "url2.jpg", "", "", ],

обработанное Celigo дает: "photos":["{{this.0.Photo1}}", "{{this.0.Photo2}}", "{{this.0.Photo3}}", "{{this.0.Photo4}}",],

Как насчет использования Array.filter () ?

let ob = {
 //..other properties
 photos:  ["url.jpg", "url2.jpg", "", "", ]
}
ob.photos = ob.photos.filter(function(el) { return el });

EDIT после комментария erictgrubaugh кажется, что Netsuite запускает Ecmascript 5, поэтому lamnda не будет работать. Я изменил его на предыдущую версию JS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...