Py学习  »  Jquery

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

drago • 3 年前 • 1463 次点击  

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

[{"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
 
1463 次点击  
文章 [ 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 与提供的匹配。