gpt4 book ai didi

javascript - 操作和更改原始数组的键

转载 作者:行者123 更新时间:2023-12-02 15:16:45 28 4
gpt4 key购买 nike

我目前正在处理数组/对象中的项目。我之前没有使用过 Improve this question ,但在阅读了这个实用工具提供的功能后,我决定尝试一下。我想要修改的数组涉及添加附加对象 sources 并更改键。如何使用 lodash 实现以下目标?

当前数组

var myArr = 
[{
"flv": "myFile.flvs",
"mp4": "myFile.mp4",
"webm": "myFile.webm",
"thumbnail": "poster.png",
"title": "Test",
"id": 123456
}];

期望的结果

{
data: [
{
sources: [{
file: "myFile.flv"
},{
file: "myFile.mp4"
},{
file: "myFile.webm"
}],
image: 'poster.png',
title: 'Test',
id: '123456'
},
....
]
}

最佳答案

这个怎么样:

var myArr = {
"data": [{
"test1": "myFile.flv",
"test2": "myFile.mp4",
"test3": "myFile.webm",
"thumbnail": "poster.png",
"title": "Test",
"id": 123456
}]
};

var result = _.map(myArr.data, function(el) {
var sources = []
_.each(el, function(v, k) {
if (k.match(/test\d*/) !== null) {
sources.push({
file: v
});
}
});
return {
sources: sources,
image: el.thumbnail,
title: el.title,
id: el.id
};
});

console.log(result);

结果:

enter image description here

根据 OP 请求更新:

var EXTENSIONS = ['flv', 'mp4', 'webm'];
var myArr = [{
"flv": "myFile.flv",
"mp4": "myFile.mp4",
"webm": "myFile.webm",
"thumbnail": "poster.png",
"title": "Test",
"id": 123456
}];

var result = _.map(myArr, function(el) {
var sources = [];
_.each(el, function(v, k) {
if (_.contains(EXTENSIONS, k)) {
sources.push({
file: v
});
}
});
return {
sources: sources,
image: el.thumbnail,
title: el.title,
id: el.id
};
});

console.log(result);

注意:这里我们可以使用 _.contains (即 lodash)或 EXTENSIONS.indexOf (原生 Javascript)。既然你想学习lodash,我想我们使用_.contains。

更新:刚刚从 map 函数中删除了 .data,因为 OP 从源数据中删除了 data 属性。

关于javascript - 操作和更改原始数组的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408360/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com