Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将键值传递给.map函数_Javascript - Fatal编程技术网

Javascript 如何将键值传递给.map函数

Javascript 如何将键值传递给.map函数,javascript,Javascript,不知道是否有人能向我解释一下:我已经通过在map函数中手动声明“键”实现了我想要的结果 我正在努力理解如何在map函数中传递键,以便可以轻松调用valueMapper('key'),以获得相同的结果(下面的示例) 我发现了一些解决方案,但似乎没有一个是有意义的。请给这个方法添加一些背景知识,我对这个过程比对解决方案更感兴趣 谢谢你的帮助 var users = [ {firstName: 'Pete', lastName: 'Barrat', favoriteFood: 'Pizza', a

不知道是否有人能向我解释一下:我已经通过在map
函数
中手动声明“
”实现了我想要的结果

我正在努力理解如何在map函数中传递键,以便可以轻松调用
valueMapper('key')
,以获得相同的结果(下面的示例)

我发现了一些解决方案,但似乎没有一个是有意义的。请给这个方法添加一些背景知识,我对这个过程比对解决方案更感兴趣

谢谢你的帮助

var users = [
  {firstName: 'Pete', lastName: 'Barrat', favoriteFood: 'Pizza', age: 30},
  {firstName: 'Lisa', lastName: 'Jenkins', favoriteFood: 'Curry', age: 34},
  {firstName: 'Bob', lastName: 'Yates', favoriteFood: 'Fish', age: 54},
  {firstName: 'Claire', lastName: 'Smith', favoriteFood: 'Steak', age: 21},
  {firstName: 'Adam', lastName: 'Johnson', favoriteFood: 'Pasta', age: 27}
 ]

// write a function call valueMapper
// valueMapper takes one argument which is the name of a key 
// it returns an array of all the values in the users array that correspond to that key
// examples: 

// valueMapper('favoriteFood')
// -> ['Pizza', 'Curry', 'Fish', 'Steak', 'Pizza']

// valueMapper('firstName')
// -> ['Pete', 'Lisa', 'Bob', 'Claire', 'Adam']


/* #1st solution, I managed to get the answers I'm looking for, but I haven't defined
the valueMapper function and I haven't passed it a key yet */

var lastName = users.map(function(users) {
    return users['lastName'];
 })

 console.log(lastName);



/* #2nd solution is an attempt to create an anonymous function so that
I can pass through a key to the function in order to read the same results*/


function valueMapper() {Object.keys(users).map(function(key) {
   return users[key];
});
}

console.log(valueMapper('firstName'));
  • 如果命名函数(
    valueMapper
    ),则它不是匿名函数

  • 在将属性值作为参数传递给函数时,不需要使用
    Object.Keys
    迭代属性。但是,作为gaurd,您可以检查传入的属性名称是否与对象上的现有属性匹配

    您可能正在寻找如下所示的解决方案

  • var用户=[
    {名字:'Pete',姓氏:'Barrat',最喜欢的食物:'Pizza',年龄:30},
    {名字:“丽莎”,姓氏:“詹金斯”,最喜欢的食物:“咖喱”,年龄:34},
    {名字:“鲍勃”,姓氏:“耶茨”,最喜欢的食物:“鱼”,年龄:54},
    {名字:“克莱尔”,姓氏:“史密斯”,最喜欢的食物:“牛排”,年龄:21},
    {名字:亚当,姓氏:约翰逊,最喜欢的食物:意大利面,年龄:27}
    ]
    //编写一个函数调用valueMapper
    //valueMapper接受一个参数,该参数是键的名称
    //它返回用户数组中与该键对应的所有值的数组
    //示例:
    //valueMapper('favoriteFood')
    //->[“比萨饼”、“咖喱”、“鱼”、“牛排”、“比萨饼”]
    //valueMapper('firstName')
    //->[“皮特”、“丽莎”、“鲍勃”、“克莱尔”、“亚当”]
    /*#第一个解决方案,我设法得到了我想要的答案,但我还没有定义
    valueMapper函数,我还没有给它传递一个键*/
    var lastName=users.map(函数(用户){
    返回用户['lastName'];
    })
    console.log(lastName);
    /*#第二种解决方案是尝试创建匿名函数,以便
    我可以通过该函数的一个键来读取相同的结果*/
    函数值映射器(PassedKey){
    返回users.map(函数(用户){
    if(user.hasOwnProperty(passedKey)){
    返回用户[PassedKey];
    }
    });
    }
    log(valueMapper('firstName'))
    
  • 如果命名函数(
    valueMapper
    ),则它不是匿名函数

  • 在将属性值作为参数传递给函数时,不需要使用
    Object.Keys
    迭代属性。但是,作为gaurd,您可以检查传入的属性名称是否与对象上的现有属性匹配

    您可能正在寻找如下所示的解决方案

  • var用户=[
    {名字:'Pete',姓氏:'Barrat',最喜欢的食物:'Pizza',年龄:30},
    {名字:“丽莎”,姓氏:“詹金斯”,最喜欢的食物:“咖喱”,年龄:34},
    {名字:“鲍勃”,姓氏:“耶茨”,最喜欢的食物:“鱼”,年龄:54},
    {名字:“克莱尔”,姓氏:“史密斯”,最喜欢的食物:“牛排”,年龄:21},
    {名字:亚当,姓氏:约翰逊,最喜欢的食物:意大利面,年龄:27}
    ]
    //编写一个函数调用valueMapper
    //valueMapper接受一个参数,该参数是键的名称
    //它返回用户数组中与该键对应的所有值的数组
    //示例:
    //valueMapper('favoriteFood')
    //->[“比萨饼”、“咖喱”、“鱼”、“牛排”、“比萨饼”]
    //valueMapper('firstName')
    //->[“皮特”、“丽莎”、“鲍勃”、“克莱尔”、“亚当”]
    /*#第一个解决方案,我设法得到了我想要的答案,但我还没有定义
    valueMapper函数,我还没有给它传递一个键*/
    var lastName=users.map(函数(用户){
    返回用户['lastName'];
    })
    console.log(lastName);
    /*#第二种解决方案是尝试创建匿名函数,以便
    我可以通过该函数的一个键来读取相同的结果*/
    函数值映射器(PassedKey){
    返回users.map(函数(用户){
    if(user.hasOwnProperty(passedKey)){
    返回用户[PassedKey];
    }
    });
    }
    
    log(valueMapper('firstName'))一种解决方案是构建一个如下所示的
    哈希表:

    {
    key1:Array(“key1的所有值”),
    key2:Array('key2'的所有值'),
    …}

    然后使用此哈希表快速获得结果。这将是一个很好的解决方案,因为您需要构建一次哈希,然后可以以
    O(1)
    的复杂度检索结果

    见下例:

    var用户=[
    {名字:'Pete',姓氏:'Barrat',最喜欢的食物:'Pizza',年龄:30},
    {名字:“丽莎”,姓氏:“詹金斯”,最喜欢的食物:“咖喱”,年龄:34},
    {名字:“鲍勃”,姓氏:“耶茨”,最喜欢的食物:“鱼”,年龄:54},
    {名字:“克莱尔”,姓氏:“史密斯”,最喜欢的食物:“牛排”,年龄:21},
    {名字:亚当,姓氏:约翰逊,最喜欢的食物:意大利面,年龄:27}
    ]
    var hash={};
    users.forEach((用户)=>{
    Object.keys(user.forEach)((key)=>{
    哈希[键]=哈希[键]| |新数组();
    哈希[key].push(用户[key]);
    })
    });
    函数getKey(key){
    返回散列[key]| |[];
    }
    console.log(getKey('age'));
    console.log(getKey('favoriteFood');
    
    log(getKey('hey'))一种解决方案是构建一个如下所示的
    哈希表:

    {
    key1:Array(“key1的所有值”),
    key2:Array('key2'的所有值'),
    …}

    然后使用此哈希表快速获得结果。这将是一个很好的解决方案,因为您需要构建一次哈希,然后可以以
    O(1)
    的复杂度检索结果

    见下例:

    var用户=[
    {名字:'Pete',姓氏:'Barrat',最喜欢的食物:'Pizza',年龄:30},
    {名字:“丽莎”,姓氏:“詹金斯”,最喜欢的食物:“咖喱”,年龄:34},
    {名字:“鲍勃”,姓氏:“耶茨”,最喜欢的食物:“鱼”,年龄:54},
    {f
    
    [a, b, c].map(fn)  // => [fn(a), fn(b), fn(c)]
    
    // e.g.
    [1.5, 2.2, 0.3].map(Math.floor)  // => [1, 2, 0]
    
    var pluck = function (collection, field) {
        return collection.map(function (item) {
            return item[field];
        });
    };
    
    // e.g.
    var albums = [
        { title: 'Colony', release: '1999' },
        { title: 'Clayman', release: '2000' },
        { title: 'Reroute to Remain', release: '2002' }
    ];
    
    pluck(albums, 'title');  // => ['Colony', 'Clayman', 'Reroute to Remain']
    
    var valueMapper = function (key) {
        return users.map(function (user) {
            return user[key];
        });
    };