如何输出唯一项的数组

How to output an array of unique items?

本文关键字:唯一 数组 输出 何输出      更新时间:2023-09-26

我正在介绍一些在线 tuts,主题是仅当 obj 的某个属性是唯一时,才将对象中的元素放入数组中。 对于此示例,该属性将是"phoneNumber",该函数uniquePush()应该起作用,因为它在网站上提供了正确的解决方案。 我的问题是输出数组。我想我不太明白返回真或返回假的东西在输出结果方面是如何工作的。我知道真假是布尔值.我相信我尝试过类似的东西

if(uniquePush(nameArr, person){
 then out put the obj.name
}

但这没有用

这是图特人的例子。

var person = {
        name:'bob', phoneNumber:1234,
        name:'joe', phoneNumber:123,
        name:'jack', phoneNumber:456,
        name:'duped1', phoneNumber:2345,
        name:'duped2', phoneNumber:2345
    }
    var nameArr =[];
    function uniquePush(arr, obj) {
      if(! ('phoneNumber' in obj)) {
        return false;
      }
      var unique = true;
      arr.forEach(function(element) {
        if(element.phoneNumber === obj.phoneNumber) {
          unique = false;
        }
      });
      if(unique) {
        arr.push(obj);
        return true;
      }
      return false;
    }

我只想有一个弹出警报框,列出唯一名称,如 [鲍勃、乔、杰克] 未被欺骗1 或被欺骗 2

我想通过做这样的事情来做到这一点

uniquePush(nameArr, person);
alert(nameArr.name);

在这种方法中,您可以通过将它们存储在数组中来跟踪phoneNumbers numbers如果它们尚不存在。如果数字在那里,使用 else 分支从数组中删除以前出现的相同numbers

var person = [
    { name: 'bob', phoneNumber: 1234 },
    { name: 'joe', phoneNumber: 123 },
    { name: 'jack', phoneNumber: 456 },
    { name: 'duped1', phoneNumber: 2345 },
    { name: 'duped2', phoneNumber: 2345 }
];
names = [];
numbers = [];
person.forEach(function(e){
    if(!(numbers.indexOf(e.phoneNumber) > -1)){
        numbers.push(e.phoneNumber);
        names.push(e.name);
    }else{
        numbers.splice(numbers.indexOf(e.phoneNumber), 1) 
        names.splice(numbers.indexOf(e.phoneNumber), 1);    
    }
});
console.log(names);

更新

function uniquePush(arr, obj) {
    if(obj.phoneNumber === 'undefined') return false;
    unique = true;
    arr.forEach(function(e){
        if(e.phoneNumber === obj.phoneNumber){
            console.log('Nah');
            unique = false;
        }
    });
    if(unique){    
        arr.push(obj);
        console.log('Yep');
    }
}

您可以测试此函数。

a = { name: "nodup", phoneNumber: 235 };
uniquePush(person,a);
console.log(person);

人最终会添加一个新对象a因为它是唯一的。

     var person = [
           { name: 'bob', phoneNumber: 1234 },
    { name: 'joe', phoneNumber: 123 },
    { name: 'jack', phoneNumber: 456 },
    { name: 'duped1', phoneNumber: 2345 },
    { name: 'duped2', phoneNumber: 2345 }
    ];

    function uniquePush(arr, obj) {
        if (!('phoneNumber' in obj)) {
            return false;
        }
        var unique = true;
        arr.forEach(function (element) {
            if (element.phoneNumber === obj.phoneNumber) {
                unique = false;
            }
        });
        if (unique) {
            arr.push(obj);
            return true;
        }
        return false;
    }