如何输出一组独特的项目?
How to output an array of unique items?
我正在浏览一些在线教程,主题是仅当对象的某个 属性 是唯一的时才将对象中的元素放入数组中。对于此示例,属性 将是 "phoneNumber" 执行该操作的功能 uniquePush()
应该可以工作,因为它在网站上提供了正确的解决方案。我的问题是输出数组。我想我不太明白 return true 或 return false 的东西在输出结果方面是如何工作的。我知道 true 和 false 是布尔值。我相信我尝试过
if(uniquePush(nameArr, person){
then out put the obj.name
}
但这没有用
这里是 tuts 的例子。
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;
}
我只想弹出一个警告框,列出唯一的名称,例如 [bob、joe、jack],而不是 duped1 或 duped 2
我想通过做这样的事情来做到这一点
uniquePush(nameArr, person);
alert(nameArr.name);
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;
}
在这种方法中,如果它们不存在,您可以通过将它们存储在 numbers
数组中来跟踪 phoneNumbers
。如果数字存在,则使用 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);
Person 将最后添加一个新对象 a
,因为它是独一无二的。
我正在浏览一些在线教程,主题是仅当对象的某个 属性 是唯一的时才将对象中的元素放入数组中。对于此示例,属性 将是 "phoneNumber" 执行该操作的功能 uniquePush()
应该可以工作,因为它在网站上提供了正确的解决方案。我的问题是输出数组。我想我不太明白 return true 或 return false 的东西在输出结果方面是如何工作的。我知道 true 和 false 是布尔值。我相信我尝试过
if(uniquePush(nameArr, person){
then out put the obj.name
}
但这没有用
这里是 tuts 的例子。
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;
}
我只想弹出一个警告框,列出唯一的名称,例如 [bob、joe、jack],而不是 duped1 或 duped 2
我想通过做这样的事情来做到这一点
uniquePush(nameArr, person);
alert(nameArr.name);
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;
}
在这种方法中,如果它们不存在,您可以通过将它们存储在 numbers
数组中来跟踪 phoneNumbers
。如果数字存在,则使用 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);
Person 将最后添加一个新对象 a
,因为它是独一无二的。