我正在创建一个对象,然后将其转换为json。 我有以下内容:
var component = "test"
var al_ag="testAG";
var al_action="ticket";
var al_app1 = "app1";
var al_app2 = "app1";
var al_cd1 = "1";
var al_cd2 = "1";
let jData = {};
jData[component] = {
alertgroup: al_ag,
action: al_action,
app_list: [{name: al_app1, code: al_cd1}]
};
jData[component].app_list.push({name: al_app2, code: al_cd2});
console.log(JSON.stringify(jData, null, '\t'));
JSON.stringify(jData)将app_list列出为两个项目的数组。
.
"app_list": [
{
"name": "app1",
"code": "1"
},
{
"name": "app2",
"code": "2"
}
]
.
在执行app_list.{name: al_app2, code: al_cd2}
之前,我如何检查app1是否已经存在而不能推送是否已经存在。
答案 0 :(得分:0)
下面是一个对{em> app2 和 app3 对象使用filter的示例。请注意,没有重复项。
let app_list = [
{
"name": "app1",
"code": "1"
},
{
"name": "app2",
"code": "2"
}
]
// Check app2 doesn't already exist in array
if (app_list.filter(a => a.name === "app2").length === 0) {
app_list.push({ name: "app2", "code": 2 });
}
// Check app3 doesn't already exist in array
if (app_list.filter(a => a.name === "app3").length === 0) {
app_list.push({ name: "app3", "code": 3 });
}
console.log(app_list);
答案 1 :(得分:0)
您可以简单地使用!
array.some()来检查元素is not
是否已经存在
let component = "test"
, al_ag = "testAG"
, al_action = "ticket"
, al_app1 = "app1"
, al_app2 = "app1"
, al_cd1 = "1"
, al_cd2 = "1"
, jData = {}
;
jData[component] = { alertgroup: al_ag
, action: al_action
, app_list: [{ name: al_app1, code: al_cd1 }]
};
let newOne = { name: al_app2, code: al_cd2 }
if (!jData[component].app_list.some(el=>el.name===newOne.name && el.code===newOne.code) )
{
jData[component].app_list.push(newOne);
}
console.log(JSON.stringify(jData, null, 2));
doc => https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
答案 2 :(得分:0)
我只是根据您的代码添加了一些代码。然后使用findIndex检查app1
上是否存在app_list
。如果索引为-1,则表示列表中不存在app1
。
var component = "test"
var al_ag="testAG";
var al_action="ticket";
var al_app1 = "app1";
var al_app2 = "app1";
var al_cd1 = "1";
var al_cd2 = "1";
let jData = {};
jData[component] = {
alertgroup: al_ag,
action: al_action,
app_list: [{name: al_app1, code: al_cd1}]
};
// You can find if app1 is already exist or not
var find_app1 = jData[component].app_list.findIndex(data => data.name === 'app1');
// If the data already exist then push app2
if (find_app1 > -1) {
console.log('app1 Exist')
jData[component].app_list.push({name: al_app2, code: al_cd2});
} else {
console.log('app1 is not Exist')
}
console.log(JSON.stringify(jData, null, '\t'));