如何遍历多个参数数组

时间:2019-01-07 19:37:12

标签: javascript node.js

我想遍历数组并将值作为参数传递给方法。

function getAll() {
   urls = [contactUrl, accountUrl, assestUrl];
   nodes = ['#contactData', '#accountData', '#assetData'];
   list = [$noContacts, $noAccounts, $noAsset];
   //Todo
   search(url, node, list);
}

例如:在第一次迭代中:search(contactUrl, '#contactdata', $noContacts)

处理此问题的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

您可以按照以下简单方法进行操作:

for (let i = 0; i < urls.length; i++) {
    search(urls[i], nodes[i], list[i]);
}

当然,这考虑到您的数组长度相同。如果您想走到最短的数组,也可以这样做:

const len = Math.min(urls.length, nodes.length, list.length);

然后迭代直到i < len

答案 1 :(得分:0)

假设所有数组的长度相同:

urls.forEach((url, index) => {
  search(url, nodes[index], list[index]);
});

答案 2 :(得分:0)

我想您会希望返回一系列搜索结果。在这种情况下,您可以使用这样的地图功能

$user = Auth::user();
return Recipe::where('disease_id', $user->id)->get();

答案 3 :(得分:0)

您可以按照其他答案所述走简单的迭代路线。但是,这要求数组的长度都相同,但更重要的是,这似乎是重构一点的绝好机会。如果这三个数组如此紧密地耦合并通过索引相关联,也许应该将它们变成单个对象数组?

function getAll() {
    let searches = [
        { url: contactUrl, node: '#contactData', list: $noContacts },
        { url: accountUrl, node: '#accountData', list: $noAccounts },
        { url: assetUrl, node: '#assetData', list: $noAsset },
    ];
    searches.forEach(item => {
        search(item.url, item.node, item.list);
    });
}