我正在编写一个函数来根据一些不同的对齐方式返回一个 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/