1234567891011121314151617181920212223242526272829303132333435363738 |
- var Class = require('./Class');
- var keys = require('./keys');
- var isObj = require('./isObj');
- exports = function(val, parents) {
- if (!isObj(val)) {
- return false;
- }
- if (parents && parents.contains(val)) {
- return true;
- }
- parents = new Node(val, parents);
- var _keys = keys(val);
- for (var i = 0, len = _keys.length; i < len; i++) {
- if (exports(val[_keys[i]], parents)) {
- return true;
- }
- }
- return false;
- };
- var Node = Class({
- initialize: function Node(val, next) {
- this.val = val;
- this.next = next;
- },
- contains: function(val) {
- var cursor = this;
- while (cursor) {
- if (cursor.val === val) {
- return true;
- }
- cursor = cursor.next;
- }
- return false;
- }
- });
- module.exports = exports;
|