gpt4 book ai didi

javascript - 从对象列表中根据另一个列表更新属性 underscorejs

转载 作者:行者123 更新时间:2023-12-03 02:35:58 26 4
gpt4 key购买 nike

我有一个对象列表“objlist”和一个 id 列表“idlist”。

var objlist = [{id:1, visible:true},{id:2, visible:false},{id:3, visible:false}];
var idlist = [1, 3];

我希望第一个列表中的对象对于第二个列表中的每个 id 具有“visible”值为“true”,而其余对象的值为“false”。

当我尝试在循环中使用循环时,我得到了错误的结果。如何获得正确的列表。

我的尝试:

var objlist = [{id:1, visible:true},{id:2, visible:false},{id:3, visible:false}];
var idlist = [1, 3];
_.each(idlist, function(p) {
_.each(objlist, function(obj) {
if (obj.id == p) {

obj.visible = true;

} else {
obj.visible = false;
}
});
});

console.log(objlist)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

当条件在后续循环中中断时,值会发生变化。

最佳答案

首先,为什么你的代码不起作用:

您首先在 idList 上循环,然后在 objlist 上循环。所以这里的问题是,在每次迭代中,只有 1 个对象的条件为 true。因此最后一个是true

以下是使用下划线的示例:

注意:其他答案已经显示了使用 vanilla JS 的方法,但由于您已经在使用下划线,因此您可以检查此方法

var objlist = [{id:1, visible:true},{id:2, visible:false},{id:3, visible:false}];
var idlist = [1, 3];
_.each(objlist, function(p) {
p.visible = _.contains(idlist, p.id)
});

console.log(objlist)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

关于javascript - 从对象列表中根据另一个列表更新属性 underscorejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48535925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com