【问题标题】:How can I access an array value without using array[key]?如何在不使用数组 [键] 的情况下访问数组值?
【发布时间】:2019-06-25 22:29:14
【问题描述】:

我正在编写一个简单的代码来获取数组中的值。我正在使用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 不能接受它,抛出这个错误:

通用对象注入接收器(security/detect-object-injection)

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

不使用这种方法如何访问数组的值?

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

【问题讨论】:

  • 既然你在处理数组,试试Array.forEach(function(value) { console.log(value)})。如果您能说出自己在做什么,我们可以提出更好的建议
  • value 定义在哪里?
  • @nickzoum value 是用户定义的
  • eslint 到底在抱怨什么?请张贴错误信息。我敢打赌这是关于使用for in,而不是array[value]

标签: javascript arrays security


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    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. 过滤器()

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 2017-12-28
      • 1970-01-01
      • 2013-10-24
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多