如果我将数组名称作为字符串传递给JS函数,那么如何在函数内部循环

If I passed array name as a string to a JS function, then how to loop through it inside the function?

本文关键字:函数 JS 循环 内部 数组 字符串 如果      更新时间:2023-09-26

我有一个大的对象数组。我想做一个高级搜索功能,我称之为:

var x = searcArray('students.id=5','history.date=2015/10/10',and more args);

然后函数将循环遍历学生数组并搜索id=5然后循环浏览学生内部的历史,并搜索日期=2015/10/10

然后返回该数组或对象

那么,如何使用JavaScriptJQuery

在vanilla js中,您可以使用Array Filter或Array Find但是存在许多库作为underscore.js

的集合

您可以使用关键字arguments,它基本上是一个数组,它包含函数中传递的所有参数:

function searcArray(){
  var arr = Array.prototype.map.call(arguments, function(item){
    return item.split('=')[1]
  })
  document.body.innerHTML = '<pre>'+ JSON.stringify(arr) + '</pre>';
}
searcArray('students.id=5', 'history.date=2015/10/10');

我试过这样,在这里检查

window.students = {'id':5};
window.history = {'date':'2015/10/10'};
function searcArray(){
    var arr = arguments;
    var results = [];
    for(var i=0;i<arr.length;i++){
        var searchQuery = arr[i].split("=")[0];
        var searchTarget = arr[i].split("=")[1];
        var searchQueryArray = searchQuery.split(".")[0];
        var searchQueryIndex= searchQuery.split(".")[1];
        if(window[searchQueryArray][searchQueryIndex] == searchTarget){
            results.push(1);
        }else{
            results.push(0);
        }
    }
    return results;
}
var x = searcArray('students.id=5','history.date=2015/10/10');
console.log(x);