如何基于数组和另一个对象创建一个新对象?

时间:2020-03-15 21:24:29

标签: javascript arrays node.js reactjs object

我试图根据现有数组创建一个新对象。我想创建一个显示在

下的新对象
{ jack: 'jack', content: 'ocean'},
{ marie: 'marie', content: 'pond'},
{ james: 'james', content: 'fish biscuit'},
{paul: 'paul', content: 'cake'}

const words = ['jack','marie','james','paul']

const myUsers = [
    { name: 'jack', likes: 'ocean' },
    { name: 'marie', likes: 'pond' },
    { name: 'james', likes: 'fish biscuits' },
    { name: 'paul', likes: 'cake' }
]

const usersByLikes = words.map(word => {
    const container = {};
    

    container[word] = myUsers.map(user => user.name);
    container.content = myUsers[0].likes;

    return container;
})

我没有得到正确的对象,但是它返回一个列表。

[ { jack: [ 'shark', 'turtle', 'otter' ], content: 'ocean'}, { marie: [ 'shark', 'turtle', 'otter' ], content: 'ocean' }, { james: [ 'shark', 'turtle', 'otter' ], content: 'ocean' }, { paul: [ 'shark', 'turtle', 'otter' ], content: 'ocean'} ]

2 个答案:

答案 0 :(得分:1)

单词数组的作用是什么?我认为以下代码会起作用。

ntile_summary <- function(data, by, var) {

     data %>%          
        mutate(col_nm = {{by}}, pcts = ntile({{by}}, n = 10)) %>% 
        group_by(pcts, col_nm) %>%
        summarize(avg = mean({{var}}, na.ram  = TRUE))
    }

ntile_summary(flights, day, arr_delay)
# A tibble: 40 x 3
# Groups:   pcts [10]
#    pcts col_nm   avg
#   <int>  <int> <dbl>
# 1     1      1 NA   
# 2     1      2 NA   
# 3     1      3 NA   
# 4     1      4 -4.44
# 5     2      4 NA   
# 6     2      5 NA   
# 7     2      6 NA   
# 8     2      7 NA   
# 9     3      7 NA   
#10     3      8 NA   
# … with 30 more rows

如果要过滤字数组中的用户,则以下解决方案将为您服务。

const result = myUsers.map(user => ({
[user.name]: user.name,
content:  user.likes
}));
console.log('result', result);

您只需一个循环即可满足您的需求。

答案 1 :(得分:1)

@ aravindan-venkatesan给出的答案应该给您您想要的结果。无论如何考虑:

使用.map()时,javascript会返回一个相同长度的数组,其中包括您在map()内部进行的任何转换。

如果要创建自己的构造的全新对象。尝试使用.reduce()。这使您可以设置输入变量,即对象,数组或字符串。

然后循环遍历并返回所需的内容,而不是旧数组的映射版本。

有关更多详细信息,请参见此处:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce