仅当元素是数组时如何调用map方法?
给定一个对象字面量,让我们说“人”。它具有许多不同类型的属性。这里的任务是仅当属性是数组本身时才映射属性的值。除了对象,我们还可以对数组执行相同的操作集。
为了实现上述任务,我们可以使用 JavaScript 中的 Array filter() 方法,然后映射结果。
Array filter() 方法用于从给定数组创建一个新数组,该数组仅由满足参数函数设置的条件的元素组成。
JavaScript 中的 Array map() 方法通过对父数组中存在的每个元素调用特定函数来创建数组。
脚步:
- 使用 Object.values() 方法将对象值转换为数组。让它成为arr。
- 使用 filter 方法迭代数组(arr)。如果元素的类型是“对象”,则过滤器返回 true。
- 使用 map 方法映射结果数组。
以下是给定问题的变体:
示例 1:从对象字面量量映射 上述方法的问题在于过滤器和 map 方法都不能用于迭代对象。若要解决此问题,应使用 Object.Values。 Object.Values 将对象作为参数并返回该对象中所有值的数组。现在我们可以在这个数组上应用数组 map() 和数组 filter() 方法。
const person = {
first_name : 'John',
last_name : 'Doe',
skill_set : ['C++', 'python', 'java',
'javascript', 'pascal', 'C#' ],
fav_numbers : [10, 19, 17, 62.98, 76, 32.9],
email : 'john@someplace.com'
}
Output: (2) [Array(6), Array(6)]
0: (6) ["C++", "python", "java",
"javascript", "pascal", "C#"]
1: (6) [10, 19, 17, 62.98, 76, 32.9]
Javascript
Javascript
示例 2:从数组映射,我们可以在这里直接使用数组 map() 和数组 filter() 方法。
const Person = ['John',8.6,['C++', 'python', 'java',
'javascript', 'pascal', 'C#' ],
'john@someplace.com',[10, 19, 17, 62.98, 76, 32.9]];
Output: (2) [Array(6), Array(6)]
0: (6) ["C++", "python", "java",
"javascript", "pascal", "C#"]
1: (6) [10, 19, 17, 62.98, 76, 32.9]
Javascript