如何在不使用array [key]的情况下访问数组值?

时间:2019-02-01 10:47:10

标签: javascript arrays security

我正在编写一个简单的代码来获取数组中的值。我正在使用array[key]for循环中获取存储在该数组中的值。

var array = ["Foo", "Bar"];

function getValue() {
  for (var key = 0; key < array.length; key++) {
    console.log(array[value]);
  }
}

此方法很简单并且可以正常工作,但是,我读到这可能会导致安全问题(The Dangers of Square Bracket Notation),ESlint对此不满意,并抛出此错误:

  

通用对象注入接收器(安全性/检测对象注入)

     

将变量[key]检测为左侧或右侧赋值操作数。 (ESLint reference

如何在不使用此方法的情况下访问数组的值?

我已经阅读了相关的问题:Why is it bad pratice calling an array index with a variable?,由于这个问题似乎难以一概而论,因此我决定提出一个新的规范问题。

2 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。

第一:您可以使用for..of循环。 for..of不使用方括号表示法,也不直接给出索引。

for(let element of list)
{
    console.log(element);
}

第二:另一种方式是@Rajesh提到的:ForEach。

list.ForEach(element => console.log(element));

答案 1 :(得分:0)

JavaScript提供了许多方法来帮助您遍历数组以进行映射,过滤和仅迭代数组。看看其中的几个:

  1. forEach()方法

    let arr = [1,2,3,4,10];
    arr.forEach((item, index) => console.log(item)) //1,2,3,4,10
    

    此方法还允许您获取商品的索引。

  2. for-of循环

    for(item of arr) {
      console.log(item) //1,2,3,4,10
    }
    

    此新功能是ES6中引入的,建议对数组进行迭代。

    如果要操作数组,可以使用以下方法,该方法还可以遍历数组:

  3. filter()

    arr.filter((item, index)=> item > 5) // Return new array [10]
    
  4. map()

    arr.map((item, index)=> item*2) // Return new array [2,4,6,8,20]