社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Jquery

使用javascript或jQuery在数组中搜索和循环?

drago • 3 年前 • 1343 次点击  

假设我有一个如下的数组:

[{"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"},
{"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"}]

我需要在此数组中按站点id搜索并显示找到的站点:

所以我做了一些这样的事,但没有用:

var siteID = 13;

$.each(myArray.filter(
            function (el) { 
               return el.site_id !== siteID ;
            }), 
            function( index, value ) {

                var fo = '<p>'+el.name+'</p>';
                $('.forms').append(fo);

            });

有人能给点建议吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129339
 
1343 次点击  
文章 [ 5 ]  |  最新文章 3 年前
kirtivardhan mishra
Reply   •   1 楼
kirtivardhan mishra    3 年前

只需在给定列表中循环,然后使用Ngif进行匹配 下面是一个使用JavaScript在数组中循环的示例。

let myArray = ["one", "two", "three", "four"];

     for(let i = 0; i < myArray.length; i++){ 
     console.log(myArray[i]);
} 
Eymen
Reply   •   2 楼
Eymen    3 年前

你需要为循环/映射做些什么
这样地:

阵列:

var arr = [
    {"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"},
    {"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"}  
];

for循环:

for (let e of arr){
  if(e.site_id == 15){
    //do something
  }
}

你也可以为它做一个开关盒

for (let e of arr){
  switch(e.site_id){
    case 15 {
      //do something if the id is 15 
    }
    case 13{
      //do something if the id is 13 
    }
    case 99 {
      //do something if the id is 99
    }
  }
}
mplungjan
Reply   •   3 楼
mplungjan    3 年前

您可以简单地循环数据以执行此任务。

考虑下面的代码:

如果确定站点id在数据中的对象中是唯一的,则可以添加break语句。

let siteId = 13;
let dataRows = [
    {"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"},
    {"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"}  
];

let formElements = '';

for(let data of dataRows){
  if(data.site_id == siteId){
    formElements += '<p>'+data.name+'</p>';
  }
}
$('.forms').append(formElements);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div class="forms"></div>
mplungjan
Reply   •   4 楼
mplungjan    3 年前

过滤和映射更简单。我们想一次性更新DOM

const arr = [{"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"},
{"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"}]

const mySiteId = 13;
$('.forms').append(
  arr
  .filter(({site_id}) => site_id !== mySiteId)
  .map(({name}) => `<p>${name}</p>`).join("")
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div class="forms"></div>
Ravi Kumar Gupta
Reply   •   5 楼
Ravi Kumar Gupta    3 年前

你可以简单地使用 Array.filter() 如下-

filteredArray = myArray.filter((a)=> {return a.site_id === siteID})

来,我们打电话来 .filter() 在…上 myArray 如果函数中的条件保持为真,则返回该元素,否则将删除该元素。

输出为-

Object { id: 23, site_id: 13, name: "Test 1", … }

因为只有这个元素 site_id 与提供的匹配。