我知道对象的值,如何只返回对象属性



我正在进行代码战争我想返回对象属性。当我知道对象值时,它可能吗?

function findOdd(A) {

let counter = {};
let finalResult;
const NumInt =  A.sort((a, b)=> a - b)
NumInt.forEach((e)=>{counter[e] = (counter[e] || 0) +1})
console.log(counter)
const values = Object.values(counter).filter((value)=>{
return value % 2 !== 0
})
Object.values(counter).filter((value)=>{
if(value % 2 !== 0){
return console.log(value)
}
})
}
findOdd([1,1,2,-2,5,2,4,4,-1,-2,5])

使用Object.values()方法返回给定对象自己的可枚举属性值的数组,因此这不是您想要的。

您可以遍历for...in语句,该语句遍历由字符串键控的对象的所有可枚举属性以实现这一点。

function findOdd(A) {

let counter = {};
let finalResult;
const NumInt =  A.sort((a, b)=> a - b)
NumInt.forEach((e)=>{counter[e] = (counter[e] || 0) +1})
console.log(counter)
const values = Object.values(counter).filter((value)=>{
return value % 2 !== 0
})
for (const el in counter){
if(counter[el] % 2 !== 0){
return console.log(el, counter[el]); //logs property name and it's value
}
}
}
findOdd([1,1,2,-2,5,2,4,4,-1,-2,5])

不能使用map、forEach、for…等数组内置函数来循环对象。。。

我在这里发布了一个解决方案。

const data = {
2: 0,
1: 2,
3: 1,
4: 7,
5: 9
}
for (const key in data) {
if (data[key] % 2 === 1)
console.log(key, data[key])
}

其他可能的方法是使用Object.keys()Object.values()

或者Object.entries()

您可以创建一个存储键的对象,出现时配对,然后用reduceObject#keys:过滤唯一一个出现奇数的键

function findOdd(arr) {
const occurrences = arr.reduce(function(acc, curr) {
acc[curr] = acc[curr] ? acc[curr] + 1 : 1;
return acc;
}, {});
const result = Object.keys(occurrences).find(key => (occurrences[key] % 2) === 1);

return Number(result);
}
console.log(findOdd([7]) === 7);
console.log(findOdd([0]) === 0);
console.log(findOdd([1, 1, 2]) === 2);
console.log(findOdd([0, 1, 0, 1, 0]) === 0);
console.log(findOdd([1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1]) === 4);

最新更新