Comments (6)
Iterable interface for the Enumerable object has been added in this pull request #62, in the sense that you can do for..of
on an Enumerable object.
But I suppose you're looking for a way to initialize Enumerable from an Iterable object, as described in #51? I think it can be done. I'll see if I can add the feature, that issue kinda slipped below the radar.
from linq.
Yes, one solution would be both Iterable and Enumerable to be easily interchangeable. I.e. implement #51 like Enumerable.from(someIterable()).where(...)
.
But I think, better solution would be to Enumerable be Iterable directly? I.e. change getEnumerator
to [Symbol.iterator]
, moveNext()
to next()
? It would be more JavaScriptish and maybe more efficient. Also, this way the library would be more easy to adopt for JS guys without C# background. The old methods may stay for BC. The problem may be compatibility with the old browsers, but IMO it would need just define to some Symbol.iterator
.
from linq.
This is now resolved: 540699b. Can you help verifying the fix?
You can now initialize the Enumerable from an iterable object, so the scenario from #51 should now work:
function* words() {
yield "abc";
yield "def";
}
console.log(Enumerable.from(words()).toArray()); // ["abc", "def"]
Symbol.iterator
was available before, so Enumerable is also an Iterable object where the code requires. Now it works both ways (initialize from Iterable and become an Iterable):
for (var a of Enumerable.from(words())) {
console.log(a);
}
The good part is that it doesn't use an array internally, so it works with infinte iterables...which is pretty sweet.
function* countToInfinity() {
var index = 0;
while (true)
yield index++;
}
Enumerable.from(countToInfinity()).where(v => v%2 == 0).forEach(x => console.log(x));
This will display all even numbers to infinity.
from linq.
Yeah, it works perfect, thanks.
Just you can use Utils.hasNativeIteratorSupport()
in Enumerable.from
:
// iterable object
if (Utils.hasNativeIteratorSupport) {
// orig code: if (typeof Symbol !== 'undefined' && typeof obj[Symbol.iterator] !== 'undefined') {
from linq.
Cool. Not quite the same, hasNativeIteratorSupport
checks the global Symbol object, basically a feature check for the browser/node. The new code checks the object we're initializing from, making sure it's iterable.
I'll publish to npm later today, thanks for helping out with this.
from linq.
Ah, I see, thanks for explanation.
from linq.
Related Issues (20)
- Typescript, generic Linq functions
- Enhancement: Async / Await functionality
- Contains Method does not Delivers True HOT 2
- Question: How to use Join Correctly? HOT 1
- Can't the groupby method groupby multiple keys?
- How to use linq in nested of nested object
- Does it support iterables? HOT 1
- Unexpected behavior in [Symbol.iterator] HOT 1
- How to use latest linq in html HOT 2
- Add toMap HOT 1
- Type inference for .toObject HOT 3
- how to use select with chained groupby HOT 1
- Overloaded `all` with extra predicate args like `every`
- how to use left join? HOT 2
- Help: OrderByDescending chain with dates not triggereing second orderBy function (but ok if type is number) HOT 2
- Missing IDictionary.key and IDictionary.values
- Enumerable.from is missing Array[] overload. HOT 1
- Transfer ownership of this package HOT 3
- Iterable support HOT 7
- How to extend Enumerable (IEnumerable?) HOT 4
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 linq.