javascript - 如何快速操作js对象列表?
怪我咯
怪我咯 2017-04-11 13:04:54
[JavaScript讨论组]
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,除了循环有快速的修改方法吗?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(6)
大家讲道理

楼上正解。
不用遍历的前提是,你知道id=3的对象在数组中的位置,但是为了找到这些对象,只有遍历。
items.forEach(function(v){ v.is_default = v.id == 3 ? true : false;})

阿神

题目的要求是不用“循环”而给每个对象设置属性。如果这里的循环是指“遍历”的话,几乎是无解的。如果是指for()循环的话,你可以事实Array对象的forEach属性,但本质上还是遍历了每个对象。

高洛峰

不遍历貌似没有别的方法可以找到id=3的集合,不行就让后端传一个id=3的集合过来,然后操作过后再组装成一个数组,不过就有点得不偿失了

黄舟

试试看map方法啦。

items.map(function(item){
    if( item.id == 3) 
        item.is_default = true;
    else
        item.is_default = false;
        
    return item;
})
PHP中文网

代码层面,楼上的几位都回答完了。
业务上如果说需要多次从这个数组中根据ID查找对象并操作,可以最先循环一次,准备一个Map(Object)

var map = {};
items.forEach(function(v){
    map[v.id] = v
});

之后map[id]拿到这个对象就可以了。

ringa_lee

感谢大家回答,map也不错,实际环境比较杂乱,没有内置函数只好用forEach了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号