javascript - 仅限 ES5 : return value when match is found after iterating over various values in an array

标签 javascript arrays foreach ecmascript-5

我正在编写一个函数来根据一些不同的对齐方式返回一个 id。代码大部分工作除了,因为forEach 没有break;。我相信我需要在数组上使用不同的过滤器或查找选项。

function getDefaultId(prod) {
    var defaultId;

    prod.images.forEach( function(image) {
        defaultId = image.isPrimary ? image.id : undefined;
    });

    return defaultId;
}

var prod.images = [
    0: {
        isPrimary: false,
        id: 1234
    },
    1: {
       isPrimary: true,
       id: 1235
    },
    2: {
        isPrimary: false,
        id: 1236
    }
]

本质上,我试图为 isPrimary 返回相应的 id。结果应该是 1236 但我得到 undefined 因为 forEach 没有中断,因此在下一次迭代时将变量重置为 undefined .

最佳答案

你可以使用 Array#some并提前退出。

function getDefaultId(prod) {
    var defaultId;
    prod.images.some(function (image) {
        if (image.isPrimary) {
            defaultId = image.id;
            return true;
        }
    });
    return defaultId;
}

var prod = { images: [{ isPrimary: false, id: 1234 }, { isPrimary: true, id: 1235 }, { isPrimary: false, id: 1236 } ]};

console.log(getDefaultId(prod));

关于javascript - 仅限 ES5 : return value when match is found after iterating over various values in an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56187385/

相关文章:

javascript - 如何通过 Ajax 调用获取 Angular 指令中的数据?

javascript - 每当 iframe 重新加载时需要回调

javascript - 在 JavaScript 中将属性嵌套在属性数组中

java - 我的方法有什么问题?

php - foreach by reference 循环中 unset 的奇怪行为

javascript - React - 将数组传递给 setState?

javascript - 如何在设备检测jquery脚本中调用一组.js文件

javascript - Bluebird 对一系列功能的 promise

javascript - 使用类循环遍历每个元素并附加其文本 JQUERY

PHP MYSQL 关联数组和表