向数组添加属性/字段



我正在开发一个angular应用程序。我有以下数据:

data = [
{
"sampleData": [{
"id":"1"
}],
"status": "completed"
},
{
"sampleData": [{
"id":"1"
}],
"status": "not completed"
},
{
"sampleData": [],
"status": "completed"
}
]

上面一个是示例数组。像这样,在运行时,我的数组可以有200-300条记录。我想添加一个属性/字段"category">

  • 如果样本数据长度大于0,则检查状态。如果状态已完成,则属性/字段"category"; "completed&;将被添加。如果状态未完成,则属性/字段"类别": "未完成"添加.

  • 如果样本数据的长度等于0,则"category"; "on hold";属性/字段被添加到数组。

因此,上面的数组在操作之后看起来应该如下所示:

data = [
{
"sampleData": [{
"id":"1"
}],
"status": "completed",
"category": "completed"
},
{
"sampleData": [{
"id":"1"
}],
"status": "not completed"
"category": "not completed"
},
{
"sampleData": [],
"status": "completed"
"category": "on hole"
}
]

同样,在运行时,我可以在数组中有200-300个元素,我需要在上述条件的基础上为每个元素添加类别,并创建最终数组。我怎样才能做到又好又有效率呢?

遍历数组,检查项目的sampleData属性长度是否大于0,如果大于,则将项目的category属性设置为项目的status属性。否则,设置为"on hold"。

const data = [{
"sampleData": [{
"id": "1"
}],
"status": "completed",
},
{
"sampleData": [{
"id": "1"
}],
"status": "not completed"
},
{
"sampleData": [],
"status": "completed"
}
]

data.forEach(e => e.category = e.sampleData.length > 0 ? e.status : "on hold")
console.log(data)

如果您不想通过使用Array.map:

改变原始文件,则可以实现相同的逻辑。

const data = [{
"sampleData": [{
"id": "1"
}],
"status": "completed",
},
{
"sampleData": [{
"id": "1"
}],
"status": "not completed"
},
{
"sampleData": [],
"status": "completed"
}
]

const res = data.map(e => ({ ...e,
category: e.sampleData.length > 0 ? e.status : "on hold"
}))
console.log(res)

使用if语句(根据OP的请求):

const data = [{
"sampleData": [{
"id": "1"
}],
"status": "completed",
},
{
"sampleData": [{
"id": "1"
}],
"status": "not completed"
},
{
"sampleData": [],
"status": "completed"
}
]

data.forEach(e => e.category = e.sampleData.length > 0 ? e.status : "on hold")
console.log(data)

您可以使用Array.map():

function addCategory(source) {
return source.map( item => ({
...item,
category: item.sampleData.length === 0
? 'on hold'
: item.status === 'completed'
? 'completed'
: 'non completed';
});
}
.
.
.
const withCategory = addCategory( getMeSomeSourceData() );

这是最简单的了。

相关内容

  • 没有找到相关文章

最新更新