我正在使用Node.js向Vimeo API发出Axios请求。
我和Json有点菜鸟,但我想了解。我用名称过滤器调用了Vimeo,所以我得到一个“对象数组”(我希望名称正确),如下所示:
[{ name: 'A Personalized Goal for Anthony' },
{ name: 'Flow access & overview' },
{ name: 'Welcome - 2018 Conference' },
{ name: 'Dropout Video' } ] }
这只是视频的名称,但是我需要添加两个键值对,它们的值与下拉菜单的名称值相同,因此如下所示:
[{ name: 'A Personalized Goal for Anthony',
"text": "A Personalized Goal for Anthony",
"value": "A Personalized Goal for Anthony" },
{ name: 'Flow access & overview',
"text": "Flow access & overview"
"value": "Flow access & overview" },
{ name: 'Welcome - 2018 Conference',
"text": "Welcome - 2018 Conference"
"value": "Welcome - 2018 Conference" },
{ name: 'Dropout Video',
"text": "Welcome - 2018 Conference"
"value": "Welcome - 2018 Conference" }]
我的应用程序需要一个下拉菜单键“文本”和“值”,以便处理用户的响应。
我不确定为什么{name:'Dropout Video'},的格式不像{{name“:” Dropout Video“},
Node.js中是否有一种方法可以使用map或push使用相同的名称值添加或复制数组,同时还对该数组进行前向反射,以反映名称,但具有两个附加的键值对,它们具有与密钥名称?
这也是一个动态对象,因此当再次调用该请求时,它可能返回的不仅仅是4个视频名称。
我的目标是将大量视频添加到我要向其发出请求的Vimeo相册中,然后我的应用程序(Slack chatbot)然后通过下拉菜单为该菜单返回一个选项列表用户的考虑,以便我能够看到他们选择的名称或标题,因此需要更多信息。
非常感谢您的帮助。我希望Vimeo有一个“文本和值”字段,所以我可以只过滤它,但是那样就不会很有趣了:)
答案 0 :(得分:1)
您可以映射结果,例如,在获得结果后:
const movies = [{ name: 'A Personalized Goal for Anthony' },
{ name: 'Flow access & overview' },
{ name: 'Welcome - 2018 Conference' },
{ name: 'Dropout Video' }];
您可以映射它以将其他两个属性添加到每个对象中,其优点是您不会改变结果。
const mappedMovies = movies.map(movie => {
return {
name: movie.name,
text: movie.name,
value: movie.name
}
);
这样,您将获得具有所需格式的对象列表,现在,如果您需要json格式,则可以执行以下操作:
const JSONString = JSON.stringify(mappedMovies);
答案 1 :(得分:0)
对象是引用,因此您可以遍历对象并添加键。
const videos = [
{ name: 'A Personalized Goal for Anthony' },
{ name: 'Flow access & overview' },
{ name: 'Welcome - 2018 Conference' },
{ name: 'Dropout Video' }
]
for (video of videos) {
video.text = video.name
video.value = video.name
}
console.log(videos)
答案 2 :(得分:0)
欢迎来到SO Kevin,
您似乎已经快要自己提供答案了……
要获取结果数组,您可以映射对象并根据需要添加键:
const slackVideos = videos.map(function (item, label) {
return {
...item, //this ensures all original keys are available, using the ES6 destructuring
text: item.name,
value: item.value,
}
});
假设videos
是从vimeo接收到的对象,slackVideos
现在将包含附加的text
和value
键;两者都包含来自原始vimeo对象的name
键。