通过JavaScript对象循环的最佳实践

这个问题在这里已经有了答案:

  • 访问/进程(嵌套)对象,数组或JSON 18个答案
  • 对于JavaScript中的每个数组? 23个答案

  • 你可以做这样的测试

    function representsNumber(str) {
        return str === (+str).toString();
    }
    
    // e.g. usage
    representsNumber('a'); // false
    representsNumber([]); // false
    representsNumber(1); // false (it IS a number)
    representsNumber('1.5'); // true
    representsNumber('-5.1'); // true
    representsNumber('NaN'); // true
    

    并缓解你的所有节点,矫枉过正的例子

    function seeker(o, test, _true, _false) {
        _true || (_true = function (e) {return e;});
        _false || (_false = function (e) {return e;});
        function recursor(o) {
            var k;
            if (o instanceof Array)
                for (k = 0; k < o.length; ++k) // iterate over array
                    if (typeof o[k] !== 'object')
                        o[k] = test(o[k]) ? _true(o[k]) : _false(o[k]);
                    else
                        recursor(o[k]);
            else
                for (k in o) // iterate over object
                    if (typeof o[k] !== 'object')
                        o[k] = test(o[k]) ? _true(o[k]) : _false(o[k]);
                    else
                        recursor(o[k]);
        }
        if (typeof o === "object") return recursor(o), o;
        else return test(o) ? _true(o) : _false(o); // not an object, just transform
    }
    
    // e.g. usage
    seeker({foo: [{bar: "20"}]}, representsNumber, parseFloat);
    // {foo: [{bar: 20}]}
    
    链接地址: http://www.djcxy.com/p/12057.html

    上一篇: best practice looping through javascript object

    下一篇: How to iterate over arrays and objects in JavaScript