为了账号安全,请及时绑定邮箱和手机立即绑定

JS 数组中的 Foreach

JS 数组中的 Foreach

MM们 2021-09-17 17:18:01
我是JS初学者。我有这个示例数组:{"record-164": {"tomany": true, "fileName": "164"},"record-165": {"tomany": true, "fileName": "165"}}和代码JS:var data = JSON.parse(json);if (data["tomany"] == true && data["fileName"] !=""){    var fileName = data["fileName"];    $.ajax({        headers: {            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')        },        cache: false,        type: 'POST',        url: '{{ route('deleteDJS') }}?id=' + fileName + '&type={{ $pageType }}',        data: {filename: fileName, id: fileName, type: '{{ $pageType }}'},        success: function (data) {            console.log("Delete file" +fileName);            refreshFileList();            //updatePhotoList();        },        error: function (e) {            console.log(e);        }    });    alert('Limit plików został przekroczony. Możesz dodać maksymalnie: ');    return;}上面的代码不能正常工作。我希望js脚本在文件有参数时删除它:tomany == true。删除功能正常工作。问题在于文件名和许多参数 - 我有很多文件 - 没有一个要删除/解析。我该如何修复?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

使用 for in 迭代您的对象,如下所示。


for(var item in data){


  if (data[item]["tomany"] == true && data[item]["fileName"] !=""){

    // perform your task here 

  }


}


查看完整回答
反对 回复 2021-09-17
?
慕村9548890

TA贡献1884条经验 获得超4个赞

如果满足条件,与其遍历数据并执行 AJAX 调用,不如拆分代码以便一次完成一项工作。


1) 迭代对象并根据条件生成一组 AJAX 承诺。


2) 使用 jQuery$.when等待所有调用完成,然后


3)根据结果更新文件列表


const data = {"record-164": {"tomany": true, "fileName": "164"}, "record-165": {"tomany": true, "fileName": "165"}};


function doFetch(filename) {

  return $.ajax({ ... });

}


function getPromises(data) {

  return Object.keys(data).reduce((acc, obj) => {

    const { tomany, fileName } = obj;

    if (tomany && filename){

      const promise = doFetch(filename);

      return acc.concat(promise);

    }

    return acc;

  }, []);

}


$.when.apply(null, getPromises()).then(result => {

  updateFilenames(result);

});


查看完整回答
反对 回复 2021-09-17
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

首先,它是一个对象,而不是数组。


您可以使用此区分对象和数组


以{->开头object


例子


const d = {'name':'your-name', 'age':23};


以[->开头array


const d_array = [{'name':'your-name', 'age':23},{'name':'your-name-2', 'age':26}];


您可以像这样迭代您的对象,然后执行 ajax。


const data = {"record-164": {"tomany": true, "fileName": "164"},"record-165": {"tomany": true, "fileName": "165"}}



for(let key in data){

  console.log(data[key]["tomany"]);

  console.log(data[key]["fileName"]);

}


查看完整回答
反对 回复 2021-09-17
  • 3 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号