首页 > 解决方案 > JavaScript:无法让 .push() 命令按预期工作

问题描述

我正在尝试创建一个函数,该函数循环遍历索引中的每个项目,并在遇到某个项目时记录下某个项目的索引。在这个函数中,当在循环中遇到“违禁品”项时,会注意到添加了索引,并且我编写的 .push() 命令应该将每个新索引附加到一个名为“违禁品索引”的空值中。但是,该命令或代码的其他部分未按预期工作,因为当我通过示例数组运行该函数时,它返回一个空数组。

我在这里哪里做错了?

function scan(freightItems) {
    let contrabandIndexes = [];
    freightItems.forEach(function(freightItem) {
        if (freightItem === 'contraband') {
            contrabandIndexes.push();
        }
    });
    return contrabandIndexes;
}

const indexes = scan(['dog', 'contraband', 'cat', 'zippers', 'contraband']);
console.log('Contraband Indexes: ' + indexes);

标签: javascript

解决方案


Array 方法将forEach索引与相关元素一起传递。因此,您可以使用该索引值附加到您的contrabandIndexes数组。

function scan(freightItems) {
    const contrabandIndexes = [];
    freightItems.forEach(function(freightItem, idx) {
        if (freightItem === 'contraband') {
            contrabandIndexes.push(idx);
        }
    });
    return contrabandIndexes;
}

const indexes = scan(['dog', 'contraband', 'cat', 'zippers', 'contraband']);
console.log('Contraband Indexes: ' + indexes);

你也不需要let contrabandIndexes = [];函数的外部。至少不在这个片段中。


推荐阅读