如何解决JavaScript 对象,如何避免重复值
尝试创建一个函数,如果键的值已被使用,则该函数不允许对象创建新键。
所以对象不能有 name = crystal 和 favoriteRock = crystal 一旦声明了值,对象中的其他键就不能有那个值。
不知道为什么我总是未定义
let keyAdderUniqueVal = function (object,key,value) {
let allvalues = Object.values(object)
if (!allvalues.includes(value)) {
object[key] = value
} else {
return object
}
}
解决方法
问题在于,在 if
语句的第一部分中,您添加了键,但没有返回对象,您只是在 else
部分执行此操作。另外,考虑创建一个新对象而不是就地修改它,例如:
const keyAdderUniqueVal = (object,key,value) => {
const newObject = { ...object }
const allvalues = Object.values(newObject)
if (!allvalues.includes(value)) newObject[key] = value
return newObject
}
let horse = { name: 'Spirit',color: 'brown' }
horse = keyAdderUniqueVal(horse,"food","carrot");
console.log(horse)
>>> { color:brown,food:carrot,name:Spirit }
horse = keyAdderUniqueVal(horse,"hair","brown");
console.log(horse)
>>> { color:brown,name:Spirit }
,
你可以试试这个
const keyAdderUniqueVal = (object,value) => !Object.values(object).includes(value) && (object[key] = value)
let horse = { name: 'Spirit',color: 'brown' };
keyAdderUniqueVal(horse,"carrot"); // => {name: "Spirit",color: "brown",food: "carrot"}
keyAdderUniqueVal(horse,"brown"); // => {name: "Spirit","spirit","brown");
keyAdderUniqueVal(horse,"some","star","brown");
console.log(horse); // { name: "Spirit",food: "carrot" }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。