【问题标题】:How to use forEach in vueJs?如何在 vueJs 中使用 forEach?
【发布时间】:2017-07-21 00:45:42
【问题描述】:

我从 API 调用得到如下响应,

现在,我必须在数组中重复整个数组。我如何在 VueJS 中做到这一点?

我已经搜索过使用 forEach.. 没有找到 forEach 的用法,例如键|值对。

谁能帮助我了解如何使用 forEach 或任何其他(VueJS)从该数组中获取值?

感谢和问候,

【问题讨论】:

  • 这是一个包含 113 个条目的单个数组,只是 Chrome 控制台显示它这样(更明显):D
  • 你是在显示数组中的数据吗?如果是这样,您应该使用 v-for 否则您可以像往常一样对对象进行操作。 Vue 包装对象以便它可以使它们具有反应性,但您可以正常访问它们
  • 我尝试了 forEach 但没有运气。下面的答案解决了我的问题。
  • 在我的情况下,当我有单极阵列时 forEach 工作。

标签: javascript arrays foreach vuejs2 vue.js


【解决方案1】:

在 VueJS 中,您可以像这样循环遍历数组: const array1 = ['a', 'b', 'c'];

Array.from(array1).forEach(element => 
 console.log(element)
      );

在我的例子中,我想遍历文件并将它们的类型添加到另一个数组中:

 Array.from(files).forEach((file) => {
       if(this.mediaTypes.image.includes(file.type)) {
            this.media.images.push(file)
             console.log(this.media.images)
       }
   }

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
【解决方案2】:

您需要的关键字是展平数组。现代 javascript 数组带有 flat 方法。如果您需要支持旧版浏览器,您可以使用第三方库,例如 underscorejs

本地例子:

var response=[1,2,3,4[12,15],[20,21]];
var data=response.flat(); //data=[1,2,3,4,12,15,20,21]

下划线例如:

var response=[1,2,3,4[12,15],[20,21]];
var data=_.flatten(response);

【讨论】:

    【解决方案3】:

    这是一个forEach用法的例子:

    let arr = [];
    
    this.myArray.forEach((value, index) => {
        arr.push(value);
        console.log(value);
        console.log(index);
    });
    

    在这种情况下,“myArray”是我的数据上的一个数组。

    您也可以使用 filter 循环遍历数组,但如果您想获得一个包含数组中过滤元素的新列表,则应该使用这个。 p>

    类似这样的:

    const newArray = this.myArray.filter((value, index) => {
        console.log(value);
        console.log(index);
        if (value > 5) return true;
    });
    

    同样可以写成:

    const newArray = this.myArray.filter((value, index) => value > 5);
    

    filter 和 forEach 都是 javascript 方法,可以在 VueJs 中正常工作。另外,看看这个可能会很有趣:

    https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

    【讨论】:

      【解决方案4】:

      VueJS 中,您可以使用 forEach,如下所示。

      let list=[];
      $.each(response.data.message, function(key, value) {
           list.push(key);
         });
      

      所以,现在您可以将所有数组放入 list 中。使用 for 循环来获取值或键

      【讨论】:

      • 代码示例与答案中的文本完全不同,甚至不起作用。
      • $$是什么意思
      • 这不是一个好的答案。 $$ 可能因项目设置而异
      • 这个人在一个 VueJS 问题上给出了一个 jQuery 答案
      • 那是错误的答案,伙计
      【解决方案5】:

      你可以使用原生的javascript函数

      var obj = {a:1,b:2};
      
      Object.keys(obj).forEach(function(key){
          console.log(key, obj[el])
      })
      

      或者为foreach创建一个对象原型,但这通常会导致其他框架出现问题

      if (!Object.prototype.forEach) {
        Object.defineProperty(Object.prototype, 'forEach', {
          value: function (callback, thisArg) {
            if (this == null) {
              throw new TypeError('Not an object');
            }
            thisArg = thisArg || window;
            for (var key in this) {
              if (this.hasOwnProperty(key)) {
                callback.call(thisArg, this[key], key, this);
              }
            }
          }
        });
      }
      
      var obj = {a:1,b:2};
      
      obj.forEach(function(key, value){
          console.log(key, value)
      })
      
      
      

      【讨论】:

        【解决方案6】:

        您也可以将 .map() 用作:

        var list=[];
        
        response.data.message.map(function(value, key) {
             list.push(value);
           });
        

        【讨论】:

        • list 是未定义的——即使我声明了它。如何将它包含在我的函数中?
        • 让列表 = []; response.data.message.map(function(value, key) { list.push(value); });
        • 你可以使用 map 循环遍历一个列表,当然,但是 map 应该用于调用回调函数并返回一个新数组(它不会修改原始数组,但回调函数可以去做)。
        • 如果 list 未定义,请尝试将其用作 let list = this.YourArrayVariable; response.data.message.map(function(value, key) { list.push(value); });
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-30
        • 2019-05-19
        • 2017-10-25
        • 2019-08-08
        • 1970-01-01
        • 2018-10-26
        • 2018-07-08
        相关资源
        最近更新 更多