var items=[
{id:3,name:'t1',mobile:'13442854167',area:'江苏 南京 秦淮区',address:'b11光彩65号',is_default:true},
{id:9,name:'t22',mobile:'13434567678',area:'北京 海淀区 ',address:'通州运河大街45号',is_default:false},
{id:3,name:'t33',mobile:'13434567678',area:'北京 潮阳区 ',address:'通州运河大街45号',is_default:false},
];
上面例子,列表里可能有很多js对象,需求是将id:3的对象is_default设置为true,其他对象设置为false,除了循环有快速的修改方法吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
楼上正解。
不用遍历的前提是,你知道
id=3的对象在数组中的位置,但是为了找到这些对象,只有遍历。items.forEach(function(v){ v.is_default = v.id == 3 ? true : false;})。题目的要求是不用“循环”而给每个对象设置属性。如果这里的循环是指“遍历”的话,几乎是无解的。如果是指for()循环的话,你可以事实Array对象的forEach属性,但本质上还是遍历了每个对象。
不遍历貌似没有别的方法可以找到id=3的集合,不行就让后端传一个id=3的集合过来,然后操作过后再组装成一个数组,不过就有点得不偿失了
试试看
map方法啦。代码层面,楼上的几位都回答完了。
业务上如果说需要多次从这个数组中根据ID查找对象并操作,可以最先循环一次,准备一个
Map(Object)。之后
map[id]拿到这个对象就可以了。感谢大家回答,map也不错,实际环境比较杂乱,没有内置函数只好用forEach了