javascript - 递归: How can I remove

标签 javascript loops

这是我的代码:

var asset = ['1234_12', '1234_34', '1234_33', '4321_22', '4321_90'];

var largest = removeElements(asset);

function removeElements(asset) {
    var retVal = [];
    for (i = 0; i < asset.length; i++) {
        for (var j = 0; j < asset.length; j++) {
            if (asset[i].split('_')[0] == asset[j].split('_')[0]) {
                if (asset[i].split('_')[1].split('.')[0] > asset[j].split('_')[1].split('.')[0]) {
                    retVal = removeElements(asset, asset[j]);
                    for (var k = 0; k < retVal.length; k++) {
                        for (var l = 0; l < retVal.length; l++) {
                            if (retVal[k].split('_')[0] == retVal[l].split('_')[0]) {
                                removeElements(retVal);
                            } else {
                                return retVal;
                            }
                        }
                    }
                }
            }
        } 
    }
    return retVal;
}

这是数组的结构:

var asset = ['1234_12', '1234_34', '1234_33', '4321_22', '4321_90'];

我想要的是在 '1234''4321' 系列中获得最大的值。例如,在本例中,我需要抓取 '1234_34''4321_90'

RangeError: Maximum call stack size exceeded

我做错了什么?

最佳答案

你让事情变得比你自己更难。您可以迭代每个项目并将匹配的值存储在对象中:

var asset = ['1234_12', '1234_34', '1234_33', '4321_22', '4321_90'];
var intermediate = {};
asset.forEach(function(v) {
  var parts = v.split('_');
  var key = parts[0];
  var val = parts[1];
  if (!intermediate[key] || intermediate[key] < val) {
    intermediate[key] = val;
  }
});

这将产生一个像这样的对象:

{"1234": "34", "4321": "90"}

然后可以将其转换为预期的数组:

var output = Object.keys(intermediate).map(function(key) {
  return key + '_' + intermediate[key];
});
console.log(output); // ["1234_34", "4321_90"]

看看.forEach , .mapObject.keys

关于javascript - 递归: How can I remove,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624873/

相关文章:

javascript - 类型 'sendEmailVerification' 上不存在属性 'void'

javascript - 以与 Google bot 类似的方式抓取网站 html 和 javascript

c - C 中的数字求和

python - 如何获取包含与索引对应的特定值的列列表作为 Pandas 数据框中的新列?

javascript - 在 jQuery 单击处理程序中获取选择器父 ID

用于更改背景的 JavaScript 复选框不起作用

javascript - 点点点点点点作为加载?

jquery - 循环遍历每个 HTML 表格列并使用 jQuery 获取数据

python - 在不绘制先前点的情况下循环绘制 map

sql - 如何在循环中使用滞后函数更新表?