mutant
Version:
Create observables and map them to DOM elements. Massively inspired by hyperscript and observ-*. No virtual dom, just direct observable bindings. Unnecessary garbage collection is avoided by using mutable objects instead of blasting immutable junk all ove
31 lines (26 loc) • 627 B
JavaScript
var computed = require('./computed')
module.exports = Keys
function Keys (collection) {
var result = []
var initialized = false
return computed(collection, function (value) {
var keys = Object.keys(value)
var changed = false
for (var i = 0; i < keys.length; i++) {
if (result[i] !== keys[i]) {
result[i] = keys[i]
changed = true
}
}
if (result.length !== keys.length) {
changed = true
result.length = keys.length
}
if (changed || !initialized) {
initialized = true
return result
} else {
return computed.NO_CHANGE
}
})
}