我正在尝试访问嵌套在数组内的对象的某些键值。
当我尝试用
filter(x => x.key('duration'));
我得到.key is not a function.
在这里,我想访问数组对象内的键“ duration”的值:
'use strict';
const monday = [
{
name: 'Write a summary HTML/CSS',
duration: 180,
},
{
name: 'Some web development',
duration: 120,
},
{
name: 'Fix homework for class10',
duration: 20,
},
{
name: 'Talk to a lot of people',
duration: 200,
},
];
const tuesday = [
{
name: 'Keep writing summary',
duration: 240,
},
{
name: 'Some more web development',
duration: 180,
},
{
name: 'Staring out the window',
duration: 10,
},
{
name: 'Talk to a lot of people',
duration: 200,
},
{
name: 'Look at application assignments new students',
duration: 40,
},
];
const maartjesTasks = monday.concat(tuesday);
const maartjesHourlyRate = 20;
console.log(maartjesTasks);
```js
答案 0 :(得分:4)
要获取所有持续时间的列表,请不要使用header {
filter: hue-rotate(90deg) brightness(10%) grayscale(10%);
}
来创建一个包含匹配特定条件的元素的新数组,而是使用Array.filter
来创建一个包含返回值的新数组。在这里,我们返回键的持续时间,因此它将创建一个包含所有持续时间的新数组。
此外,当使用Array.map
或Array.filter
时,该函数的第一个参数是您要处理的数组的元素。
该元素是一个对象,例如:
Array.map
访问{
name: 'Write a summary HTML/CSS',
duration: 180,
},
值的正确方法是使用duration
表示法,例如:.
。
没有用于访问对象密钥的x.duration
方法。
在我的示例中,您还将看到我使用了key
,称为...
。我用它来连接两个数组。除了调用速度更快之外,其他操作与调用spread operator
相同。
concat
NOTA :这不会处理重复的持续时间。如果您不希望重复,建议您查看:Set
答案 1 :(得分:0)
尝试直接用“。”调用对象属性。像这样:
let arr = monday.filter(obj => {
console.log(obj.duration) // 180, 120, 20, 200
})
答案 2 :(得分:0)
x.key('duration')
将调用"key"
的{{1}}方法,该方法没有一个。
使用括号符号:
x