【问题标题】:jQuery.each() in Node.js?Node.js 中的 jQuery.each()?
【发布时间】:2012-04-07 14:51:20
【问题描述】:

我必须在 JSON 数组中循环才能在 node 中获取一些信息,但我只知道如何在 jQuery 中使用 $.each()。所以我想知道node.js中$.each jQuery函数是否有替代方案?

【问题讨论】:

  • "...但我只知道如何在 jQuery 中使用 $.each() 来做到这一点" 这让我有点难过。你应该学习语言。如果它是一个数组,最接近的选择是.forEach()
  • 是的,一年纯 jQuery 和从 node.js 开始让这一切发生。
  • 顺便说一下,我建议你看看underscore.js——它可以作为一个节点模块使用,非常轻量级,并提供了无数方便的方法,例如each()map()、@ 987654329@等
  • @squint, .forEach() 仅适用于 Array 实例,但询问者希望使用字母键遍历 Object。
  • @MaxTsepkov:我想我在问题中看不到任何证据。他说这是一个数组。但如果它是一个非数组对象,那么重点仍然存在,因为我希望 for-in 会成为最先学习的东西之一。

标签: javascript node.js loops foreach


【解决方案1】:

在 nodejs 中,我发现 Array.forEach(callback) 最适合我的需求。它就像 jQuery 一样工作:

myItems.forEach(function(item) {
   console.log(item.id);
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

【讨论】:

    【解决方案2】:

    你应该使用原生的for ( key in obj )迭代方法:

    for ( var key in yourJSONObject ) {
        if ( Object.prototype.hasOwnProperty.call(yourJSONObject, key) ) {
            // do something
            // `key` is obviously the key
            // `yourJSONObject[key]` will give you the value
        }
    }
    

    如果您正在处理一个数组,只需使用常规的for 循环:

    for ( var i = 0, l = yourArray.length; i < l; i++ ) {
        // do something
        // `i` will contain the index
        // `yourArray[i]` will have the value
    }
    

    或者,您可以使用数组的原生forEach 方法which is a tad slower,但更简洁:

    yourArray.forEach(function (value, index) {
        // Do something
        // Use the arguments supplied. I don't think they need any explanation...
    });
    

    【讨论】:

    • 如果您大量使用回调(并且您可能在 nodejs 中这样做),您可能别无选择,只能使用 forEach 方法。例如,如果您在循环中进行异步调用,并且必须打印数组中每个元素的结果,则 array[i] 将无法在内部回调中工作。
    • @Joseph Silber,您的答案是正确的,但是对于 forEach,可能正在查看此内容的人可能还需要了解 Object.keys 如果他们正在使用对象。
    【解决方案3】:

    你可以用这个

    for (var name in myobject) {
       console.log(name + ": " + myobject[name]);
    }
    

    myobject 可能是您的 JSON 数据

    在这里查看答案:Looping through JSON with node.js

    【讨论】:

    • 效果很好。非常感谢您的建议! :)
    • 这也将循环存储在Object的原型中的属性。始终通过hasOwnProperty 进行检查。
    • @HieuVanMach - 所以拜托!将其添加到您的答案中。
    【解决方案4】:

    jQuery 只是 javascript,你可以自己做循环。

    我不知道您正在循环的 JSON 数组的结构,但您可以使用 for..in 方法来获取对象的每个属性。

    所以你会做这样的事情:

        for( var i = 0; len = jsonArray.length; i < len; i++) {
            for(var prop in jsonArray[i]) {
             //do something with jsonArray[i][prop], you can filter the prototype properties with hasOwnProperty
            }
    }
    

    您还可以使用Array 提供的forEach 方法,其工作方式类似于jQuerys .each()

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2012-10-18
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多