Я использую lodash.js версии 4.17.15. У меня есть 2D-массив как имя переменной dataArr, Я собираюсь выполнить следующие методы в цепочке, чтобы получить количество каждого содержимого dataArr. const countsObj = _.chain(dataArr).flatten().compact().countBy();
У меня const count = 70,
Затем я выполняю следующий метод, чтобы получить контент, который повторяется по количеству раз. const keyMarker = _.chain(countsObj).invertBy().filter((значение, ключ) => parseInt(key) == count).flatten();
согласно документации https://lodash.com/docs/4.17.15#flatten, keyMarker должен быть типа Array. Если я печатаю console.info(keyMarker), keyMarker четко отображается как массив с правильными элементами. Но _.isArray(keyMarker) ложно, а _.isObject(keyMarker) истинно. keyMarker не имеет свойства размера длины. _.isArray(keyMarker) показывает 5 независимо от количества элементов в массиве. Если я делаю срез, как keyMarker[0], я получаю неопределенность.
При попытке получить пересечение keyMarker с другим массивом отображается следующая ошибка: «Аргумент типа «CollectionChain» не может быть назначен параметру типа «ArrayLike<string | число>'. Свойство «длина» отсутствует в типе «CollectionChain», но необходимо в типе «ArrayLike<string | число>'».
Я новичок в Lodash, может ли кто-нибудь посоветовать мне, как преобразовать CollectionChain, сгенерированный Lodash, в «ArrayLike<string | номер>'?
Спасибо Шайлеш Патель
Спасибо @OriDrori, я создал фрагмент кода здесь ссылка. Вы можете видеть, что dataArr представляет собой двумерный массив. Это тип массива. Я использовал цепную обертку и сделал flattenDeep, согласно документации он должен возвращать массив, но он возвращает объект, а dataArr — это значение ключа «обернутое», без плоского. Мое фактическое приложение находится в Script Lab, размещенном в Microsoft Excel. Текущее поведение отличается от поведения в лаборатории сценариев. Если вы знакомы с Script Lab, я поделюсь сутью.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Последовательности Lodash оцениваются лениво. Чтобы разрешить цепочку и получить результат от объекта цепочки, вам нужно использовать .value():
const dataArr = [["","","","","","","","","",""],["","INVOICE","","","","","","","",""],["","","","","","","","","",""],["","","","","","","INVOICE # 1","","",""],["","","","","","","","","",""],["","","","","","","","","",""],["","","","","","","DATE","","",""],["","","","","","","","","",""],["","From:","","","","","To:","","",""],["","Your name","","","","","Receivers Name","","",""],["","Address","","","","","Address","","",""],["","Email Address","","","","","Email Address","","",""],["","Phone number","","","","","Phone number","","",""],["","","","","","","","","",""],["","","","","","","","","",""],["","#","Item name","","","Qty","Unit cost","Discount","Total",""],["",1,"Do It Yourself Tornado Kit","","",1,"$489.00 ","","$489.00 ",""],["","Signature","","","","","","","",""],["","","","","","","","","",""],["","","","","","","","","",""],["","Your company name, address and footer","","","","","","","",""]];
const countsObj = _(dataArr)
.flattenDeep() // flattens multi-dimensional array
.compact() // removes empty values
.countBy() // creates an object of [value]: times
.value(); // executes the chain sequence to resolve the unwrapped value
const count = 2;
const keyMarker = _(countsObj)
.pickBy(v => v === count) // take properties by condition
.value(); // executes the chain sequence to resolve the unwrapped value
console.info('countsObj\n', countsObj);
console.info('keyMarker\n', keyMarker);<script src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity = "sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ= = " crossorigin = "anonymous" referrerpolicy = "no-referrer"></script>
Можете ли вы добавить оригинальный обр? рабочий фрагмент или, по крайней мере, блок кода было бы здорово.