Javascript 对象中的键值赋值,作为map的箭头函数中的参数传递
在下面的代码中,我在map函数中传递一个对象数组。Javascript 对象中的键值赋值,作为map的箭头函数中的参数传递,javascript,ecmascript-6,arrow-functions,Javascript,Ecmascript 6,Arrow Functions,在下面的代码中,我在map函数中传递一个对象数组。category的值被分配给categoryName,并作为categoryName返回。我的问题是理解作业。对对象属性的赋值不是这样发生的吗key:value?相反,我看到category的值以这种方式分配给这个新变量value:key const companies= [ {name: "Company One", category: "Finance"}, {name: "Company Two", category: "Retai
category
的值被分配给categoryName
,并作为categoryName
返回。我的问题是理解作业。对对象属性的赋值不是这样发生的吗key:value
?相反,我看到category
的值以这种方式分配给这个新变量value:key
const companies= [
{name: "Company One", category: "Finance"},
{name: "Company Two", category: "Retail"}
];
const companyu = companies.map(
({ name, category: categoryName }) => ({ name, categoryName }))
当您仅在对象
{value}
中给定一个值时,键属性将与变量名相同(变量名用作键的占位符)
a='Value'
log({a})
自从ES6(或ES2015)被称为速记符号以来,这是一个可用的特性
如果要定义一个对象,该对象的键与作为属性传入的变量具有相同的名称,则可以使用简写法,只需传递键名即可
在ES5(旧语法)中,正如您所说,我们需要使用key:value。例如:
var name = 'John';
var surname = 'Matthew';
var age = 45;
var myObject = {
name : name,
surname : surname,
age : age
};
console.log(myObject);
在ES6+(或ES2015+)中,如果要将属性的名称保留为传入的变量,则不需要使用key:value。像这样:
let name = 'John';
let surname = 'Matthew';
let age = 45;
let myObject = {
name,
surname,
age
};
console.log(myObject);
{name,category:categoryName}
,尽管看起来像一个对象文字,但它不是一个。当在需要表达式的地方编写时,如let x={name,category:categoryName}
,该语法创建了一个对象,但当在需要参数名的地方编写时,如函数foo({name,category:categoryName}){}
和您的示例一样,它会分解一个对象
分解是一个可以讨论的完整主题,但要点是,您编写的模式中包含一些名称,而不是单个名称,并且该模式应用于给定值以设置所有模式的名称。那么这个
const {a, b} = obj;
相当于这个
const a = obj.a;
const b = obj.b;
此外,如果希望使用与道具名称不同的变量名称,可以这样做
const {a, b: c} = obj;
这相当于
const a = obj.a;
const c = obj.b;
这就是你的
{name,category:categoryName}
在这里所做的。你只是在解构时为类别
创建一个别名。{key:value}
在内部解构时的行为不同,键:
是占位符,变量名是值。前几天我在看@getify视频,他说这可能会让人困惑,因为这就像是对象创建的反面。我的问题更多的是关于这一部分的category:categoryName
。我看到categoryName被分配了category的值。这是怎么发生的?@PunyaslokaParida我添加了一个例子,让你更了解我的评论的意思。您可以看到更新