Comments (8)
Push returns length instead of just this
from 30-seconds-of-code.
There are snippets already subjected to the same problem, e.g. Math.max(...arr)
from 30-seconds-of-code.
This is a fair point. I hadn't looked at the flatten()
snippet yet, but O(N^2) is usually reserved for very specific use cases(sorts, searches) and as such means that it should probably be addressed. Your provided snippet of
const flatten = arr => [].concat(...arr)
looks about right in terms of big O and avoids using any complicated memory tricks with comma operators. The only problem is it causes the stack to blow up. I'm not certain the alternate is better in terms of speed, but does reduce suffer from stack issues?
const flatten = arr => arr.reduce( ( a, v ) => Array.isArray( v ) ? a.concat( v ) : a.push( v ), [ ] )
uhh my flatten is failing for some reason... I'll look more into on lunch
from 30-seconds-of-code.
Unfortunately there’s no concise, fast and large arrays-tolerant solution for that problem.
It’s either slow, or can blow up or is big and clumsy
from 30-seconds-of-code.
As it stands simple modifications to that one keep breaking, and after looking at it closer I'm not certain it avoids the big O problem either if it did work as expected. If someone can find a good balance between O(N) and speed in a working function that doesn't explode we might want to adopt that, but otherwise this one is pretty smart and could still work. Just the issue should be mentioned.
from 30-seconds-of-code.
Pretty much any array method that works through 100k elements will break down, so we can't do a lot about it, except eventually add a disclaimer. (There will be a separate issue to discuss this as a general guideline). I'm closing this issue for now, as we can't really do a lot about this, apart from accept that JS has its quirks.
from 30-seconds-of-code.
So here's a (seemingly) fast, robust, but not beatiful solution.
const chunkedEach = (arr, fn, size = 10000) => {
for (let i = 0; i < arr.length / size; i++) {
fn(arr.slice(i * size, (i + 1) * size));
}
};
const flatten = arr => {
const result = [];
arr.forEach(a => {
if (Array.isArray(a)) {
chunkedEach(a, sub => result.push(...sub));
} else {
result.push(a);
}
});
return result;
);
from 30-seconds-of-code.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for any follow-up tasks.
from 30-seconds-of-code.
Related Issues (20)
- Merge two arrays and remove duplicate elements HOT 2
- CSVToArray will return an empty item for documents ending with \n HOT 2
- addDaysToDate fails with non-UTC timezone HOT 1
- A snippet folder dedicated to Angular
- Js
- Broken links HOT 4
- New snippet ideas HOT 1
- passive-scroll-listener-performance has obsolete/incorrect advice HOT 2
- Regarding the throttle function's question. HOT 7
- style: Centering the footer section ⏡ HOT 2
- Website Navigation Bar
- cookie parsing containing a `=` in value HOT 5
- [ BUG ] Missing space in footer section HOT 12
- Typo in the event-loop-explained.md snippet HOT 2
- fix: Unnecessary parameter in Queue class methods HOT 2
- Terminology issue in blog HOT 4
- :bug: Fix Footer settingsPath (GithHub,CC ,30-sec-of-code Link)
- Kindly add hacktoberfest label to your repo. HOT 1
- [Feature Request] : The border of search bar is not clearly visible .
- Typo on the website
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from 30-seconds-of-code.