javascript - 我想要把取出一个数组(里面放的是对象)中对象的某个属性,再去重后重构,有什么好的方法
大家讲道理
大家讲道理 2017-05-19 10:27:10
[JavaScript讨论组]


就是这么一个数组,我要取出每一个对象中的team_name的value值,去重后,在组成[{"teamName": "team_name的值",flag: false},{},{},,,]这种形式(所有的flag都是false),想到了解决方法(下面),想问问有什么优化么,,实在是丑

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(6)
某草草
function getTeamName(hash){
  return  hash
          .map((value)=>{
                return value.team__name; 
          }).reduce((pre,next)=>{
                if(!pre.some((value)=>{
                    return value === next;
                })){
                    pre.push(next);
                    return pre;
                }else{
                    return pre;
                }
            },[]);
}
阿神
var filters = data.map((item) => item.team_name);
var result = Array.from(new Set(filters))
                  .map(item => {
                       teamName: item,
                       flag: false
                   })
ringa_lee

我觉得最好用的去重方法思路如下:

let data = {}       // 判断是否是已经存在的数据
let teamName = []    // 存放结果
for (var item in team_name) {
  if (!data[item]) {    // 如果不存在  添加
    teamName.push({
      teamName: item
    })
  }
  data[item] = 1    // data的item赋值  下次判断的时候  这个值已经有了
}
PHPz
const arr = [...new Set(your_data.map(item => item. team_name))].map(item => ({teamName: item, flag: false}))
我想大声告诉你


上午的时候我改成了这样的方法,结果后续要用到这个teamList的flag时候,发现自己给自己挖了坑,每次都var一个data,然后生成的teamList指向改变,害我花了两个多小时,console.log半天明明前后的是一个对象啊,最后还是问了老大才解决,在此记录一下用第三方库的时候想明白 到底有没有改变值,改变引用。(_.这是引用了underscore第三方的库)

怪我咯

1.先循环将所有结果压到一个数组中,然后再针对此数组做去重处理,缺点就是啰嗦。

2.循环取属性结果时就做判断,是否为重复项,处理得到最终结果,一次循环搞完,快。

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

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