将jquery的每个函数转换为纯javascript

时间:2017-02-10 10:36:01

标签: javascript

我有脚本在选择框中显示下拉列表。我目前使用的脚本是

jQuery.each( dslr, function( index, dslrgp) {
    var aslrp= dslrgp.aslrp;
    jQuery.each( aslrp, function(index2, pslrp) {
        var found = 0;
        jQuery.each( dropdown, function(index3, dditem) {
            if (dditem.countryname == pslrp.countryname)
            {
                foundit = 1;
            }
        });
        if (foundit == 0)
            dropdown.push(pslrp);

    });
});

如何将此转换为纯javascript。因为如果我使用这个

dslr.forEach(function( index, dslrgp) {
    var aslrp= dslrgp.aslrp;
    aslrp.forEach(function(index2, pslrp) {
        var found = 0;
        dropdown.forEach(function(index3, dditem) {
            if (dditem.countryname == pslrp.countryname)
            {
                foundit = 1;
            }
        });
        if (foundit == 0)
            dropdown.push(pslrp);

    });
});

它不起作用。

3 个答案:

答案 0 :(得分:1)

注意本地forEach中参数顺序的差异 - 第一个是item的值,第二个是index。所以而不是:

aslrp.forEach(function(index2, pslrp) {
...
dropdown.forEach(function(index3, dditem) {

使用它:

aslrp.forEach(function(pslrp, index2) {
...
dropdown.forEach(function(dditem,index3) {

答案 1 :(得分:1)

您的方法签名错误。它是:

arr.forEach(function callback(currentValue, index, array) {
    //your iterator
}[, thisArg]);

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

答案 2 :(得分:1)

您使用的.forEach()方法错误。 forEach docs

您不需要将数组作为第一个参数传递。只需通过回调。

dslr.forEach(function(dslrgp) {
  // do something..
}

或使用键/值迭代

dslr.forEach(function(value, index) {
  // do something..
}