gpt4 book ai didi

javascript: 集合[id][prop] = 集合[id][prop] || []//将空数组分配给对象时出现问题

转载 作者:行者123 更新时间:2023-12-02 20:52:45 28 4
gpt4 key购买 nike

所以我有一个代表专辑信息的 JSON 对象。给定“function updateRecords(id, prop, value)”我希望能够更新每个条目。正确的完成代码如下。
我得到了指示,粗体部分,我不明白:

If prop is "tracks" but the album doesn't have a "tracks" property, create an empty array before adding the new value to the album's corresponding property.

解决方案是:

collection[id][prop] = collection[id][prop] || []

所以我将其设置为等于其自身或空白数组?我不明白那里的逻辑。情况:我有一个奇异值,我想分配给一个对象属性。但我希望该值位于数组中,以便以后如有必要可以为其分配更多值。好吧,太好了,我明白了。但是,如果我想创建一个数组,为什么我不能只说 collection[id][prop] = []...“or”的作用是什么?

完整问题来自:https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/record-collection

var collection = {
2548: {
album: "Slippery When Wet",
artist: "Bon Jovi",
tracks: [
"Let It Rock",
"You Give Love a Bad Name"
]
},
2468: {
album: "1999",
artist: "Prince",
tracks: [
"1999",
"Little Red Corvette"
]
},
1245: {
artist: "Robert Palmer",
tracks: [ ]
},
5439: {
album: "ABBA Gold"
}
};


function updateRecords(id, prop, value) {
if(value === "") delete collection[id][prop];
else if(prop === "tracks") {
collection[id][prop] = collection[id][prop] || []; //This line here I don't understand
collection[id][prop].push(value);
} else {
collection[id][prop] = value;
}

return collection;
}

最佳答案

|| 运算符从给定的操作数中返回第一个 truthy 值。如果collection[id][prop]有一个数组对象作为其值,那么该数组对象将被视为真实值,并且该值将从表达式返回.

如果collection[id][prop]未定义,即缺少数组,那么它将被视为falsy值第二个操作数空白数组对象将被分配给 collection[id][prop]

在下面的示例代码片段中,|| 运算符返回空白数组对象,因为第一个操作数是 undefined,这将被视为falsy值:

const val = undefined || [];
console.log(val);

|| 是一个短路运算符,如果第一个操作数是 truthy,它不会检查第二个运算符,而是返回第一个:

const val = [1, 2, 3] || [];
console.log(val)

关于javascript: 集合[id][prop] = 集合[id][prop] || []//将空数组分配给对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61565775/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com