javascript - 从输入修改数组然后返回输出

标签 javascript arrays input

我正在尝试获取一个名为input的数组并对其进行循环。

如果任何值是奇数,则它们会乘以 2。

如果有偶数,它们会被除以 2,然后被推送到一个输出数组,然后我可以返回该数组。

到目前为止,我已经有了这个(使用 cmd 节点):

function modify(input) {
    var output = [];
    for (i=0; i=input.length; i++) {
        if (input % 2 == 1) {
            input*2;
            output.push[input];
        }
        if (input % 2 == 0) {
            input/2;
            output.push[input];
        }
    }
    return output;
}

module.exports.modify = modify;

最佳答案

最大的问题是你永远不会访问input的元素,而只是访问数组本身。您的 if (input % 2 == 1) 行检查数组 mod 2 是否等于 1。这没有意义,因为您实际上不能这样做数组的数学运算。

您需要对每个元素执行此操作,因此最小的更改是在循环中使用 input[i]

您还可以进行许多其他更改,以及一些可以使代码变得更好的惯用模式。如果您使用的是最新的浏览器并且有 forEachmap,您可以使用如下结构替换循环:

var output = input.map(function (it) {
    if (it % 2 == 1) return it * 2;
    if (it % 2 == 0) return it / 2;
});

仍然可以清理,因为 x % 2 只能返回 01,因此您可以替换第二个条件与 else 或假设它返回 0:

var output = input.map(function (it) {
    if (it % 2 == 1) return it * 2;
    return it / 2;
});

由于 JS 处理 true 和 false 的方式,特别是转换数字,您可以省略 == 1 (1 为 true),并将条件交换为三元:

var output = input.map(function (it) {
    return (it % 2) ? it * 2 : it / 2;
});

由于您将其包装到函数中,如果您使用 map ,那么 output 并不是绝对必要的,因此您可以这样做:

module.exports.modify = function (input) {
    return input.map(function (it) {
        return (it % 2) ? it * 2 : it / 2;
    });
};

如果您有 ES6 支持(可能通过 the brilliant 6to5 project ),您可以用箭头函数替换函数声明:

module.exports.modify = (input) => {
    return input.map((it) => {
        return (it % 2) ? it * 2 : it / 2;
    });
};

如果您想真正了解它,您可以删除 return 语句(感谢箭头函数):

module.exports.modify = input => input.map(it => it % 2 ? it * 2 : it / 2);

关于javascript - 从输入修改数组然后返回输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458249/

相关文章:

javascript - 带有滚动过渡的 HTML 中的 anchor 标记不能正确地相互链接

pandas - tf.estimator.inputs.pandas_input_fn 标签张量

java - 如何从 Java 中的 .dat 文件中读取一行然后需要将其分开?

C# 数组和指针

jquery - 如何使用 jQuery 设置输入(文本框)的值?

通过一维的 JavaScript 二维数组迭代不起作用

javascript - TypeScript null 检查不注意 array.length 检查

javascript - 尽管单击的按钮不是提交按钮,但表单已提交

java - 使用缓冲阅读器在java中读取文本文件时获取空值

java - 将数据导入二维公共(public)数组