访问嵌套在数组中的对象的特定值

时间:2019-05-09 08:27:26

标签: javascript

我正在尝试访问嵌套在数组内的对象的某些键值。 当我尝试用 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

3 个答案:

答案 0 :(得分:4)

要获取所有持续时间的列表,请不要使用header { filter: hue-rotate(90deg) brightness(10%) grayscale(10%); }来创建一个包含匹配特定条件的元素的新数组,而是使用Array.filter来创建一个包含返回值的新数组。在这里,我们返回键的持续时间,因此它将创建一个包含所有持续时间的新数组。

此外,当使用Array.mapArray.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