javascript - 如何简化嵌套循环和条件?

标签 javascript jquery json

给定一个 JS 如下:

for (c in chars) {
    for (i in data) {
        if (data[i].item === chars[c]) {
            // do my stuff;
        }
        else { /* do something else */}
    }
}

以及数据:

var chars = [ 'A', 'B', 'C', 'A', 'C' ];
var data = [
    {'item':'A', 'rank': '1'}, 
    {'item':'B', 'rank': '2'}, 
    {'item':'C', 'rank': '3'}
    // no duplicate
];

是否有更简单的语法来表达这一点,而不是嵌套的 for 循环和内部条件?

我尝试匹配两个数据集,更准确地说是使用 chars 的键来迭代data 并查找值。

最佳答案

你可以这样做:

for (i = 0; i < data.length; i++) {
    if (chars.indexOf(data[i].item) != -1) {
        // Do something
    } else {
        // Do something else
    }
}

但是,如果 chars 很大,我会创建一个对象,其键是 chars 的元素,并使用 if (chars_obj[data[i].项目])。这比每次都搜索数组更有效率。

关于javascript - 如何简化嵌套循环和条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767341/

相关文章:

javascript - 此 JavaScript 代码是否会通过禁用一个按键来影响其他按键事件?

javascript - 尝试使用 jquery 创建 CSS 类

android - 如果我使用 volley 库单击 ListView 中的特定项目,如何获取特定数据

javascript - 动态改变相对图像路径

javascript - 在 modal/div 中显示 ajax 响应 - 当响应为网页形式时

javascript - 网格取消事件未触发

Web 应用程序 : centralization vs. 规范的 Javascript/jQuery 最佳实践

php - 使用 ajax 处理长时间的服务器端操作?

java - Gson 忽略值 = null 的 map 条目

java - Jackson JsonDeserialize 没有被@QueryParam 调用