javascript数组的比较运算符

时间:2017-12-17 11:02:26

标签: javascript arrays

我无法使用比较运算符来确定是否将有效的数组名称传递给函数。功能如下:

const clear = (arrayName) => {
    console.log(arrayName);
    if (!arrayName) {
      return null;
    } else if (arrayName == !kicks || !snares || !hiHats || !rideCymbals) {
      return null;
    } else {
      arrayName.fill = false;
    }
}

正如您所看到的,该函数的目的是将数组的元素设置为false,并且有效的arrayNames是kick snares hiHats或rideCymbals。

我在console.log arrayName中获取通过arrayName传入的数组的条目,而不是比较运算符的数组名称。

如何获取数组的名称才能将其用作比较运算符?或者我应该如何解决这个问题?

提前致谢

3 个答案:

答案 0 :(得分:1)

您需要将名称传递给string,当您将数组传递给函数时,它将通过另一个变量在函数中引用。

没有这样的运算符来获取变量名称。您可以改为使用哈希对象,该哈希对象将根据键包含变量的name

尝试这样的事情

const validNames = ['kicks', 'snares', 'hiHats', 'rideCymbals'];

const kicks = [];

const map = new Map([[kicks, 'kicks']]);

const clear = (array, arrayName) => { 
    if (!arrayName || !validNames.includes(arrayName)) {
        console.log(arrayName);
        return null;
    } else {
        array.fill = false;
    }
};

console.log(clear(kicks, map.get(kicks)));
console.log(kicks.fill)

答案 1 :(得分:0)

假设您的阵列名称是“踢”;

var kicks = [1,2,3,4,5];

这里踢是一个变量,只指向内存地址。你不能在这里取变量的名称。但你可以这样做。

var kicks = {   arrayName中的: '踢',   踢:[1,2,3,4,5] }

然后将kicks.arrayName传递给您的函数进行验证。 希望这会对你有所帮助。

答案 2 :(得分:0)

这是你遇到问题的一行:

} else if (arrayName == !kicks || !snares || !hiHats || !rideCymbals) {

假设kickssnareshiHatsriceCymbals是现有数组,并且它们是全局变量,则需要将它们检查为字符串:

} else if ((arrayName !== "kicks") && (arrayName !== "snares") && (arrayName !== "hiHats") && (arrayName !== "rideCymbals")) {

而不是

arrayName.fill = false;

你需要

window[arrayName].fill = false;