【问题标题】:I have an array with same values need to remove all the other values我有一个具有相同值的数组需要删除所有其他值
【发布时间】:2021-05-30 03:47:27
【问题描述】:

例如:

var arr = {
    "servicegroup": [{
            "name": "yy",
            "description": "yy",
            "isvalid": 1
        }, {
            "name": "yy",
            "description": "yy",
            "isvalid": 1]
    }
}

【问题讨论】:

  • 通过数组中的哪个键找到唯一元素?
  • 是否需要检查同名
  • 这是无效的 js - 括号不匹配。请发布有效的输入和所需的输出。你有什么办法解决这个问题?
  • 编辑输入
  • 您的 js 仍然无效.. 您的数组在其最后一个元素之前结束

标签: angular typescript


【解决方案1】:

您可以利用数组的拼接功能并删除不需要的元素:

类似这样的:

var arr = {
  "servicegroup": [{
    "name": "yy",
    "description": "yy",
    "isvalid": 1
  }, {
    "name": "yy",
    "description": "yy",
    "isvalid": 1
  }]
}

console.log('Original Array ==>', arr);

for (let i = 1; i < arr.servicegroup.length; i++) {
  let stringifiedFirstObject = JSON.stringify(arr.servicegroup[0]);

  let stringifiedIthObj = JSON.stringify(arr.servicegroup[i]);

  if (stringifiedFirstObject === stringifiedIthObj) {
    arr.servicegroup.splice(i, 1);
  }
}

console.log('Modified Array ==>', arr);

【讨论】:

    【解决方案2】:

    算法方式:-

    const arr = { "servicegroup": [ { "name": "yy", "description": "yy", "isvalid": 1 }, { "name": "yy", "description": "yy", "isvalid": 2 } ] };
    const source = arr[ 'servicegroup' ];
    const obj = {};
    const res = [];
    let i = 0;
    let count = 0;
    for (let i = 0; i < source.length; i++) {
        const el = source[ i ];
        if (count === 0) {
            obj[ el.name ] = true;
            *emphasized text*count++;
        }
        if (obj[ el.name ]) {
            res.push(el);
            delete obj[ el.name ];
        }
    }
    console.log(res);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2021-05-30
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多