我有一個物件,其中包含一個物件陣列,我想從 createValue 陣列中洗掉一些物件。
我希望能夠同時洗掉多個物件。我嘗試了拼接,但是當我洗掉它時,它被寫成未定義的。
這是我的代碼:
let obj2 = {
projectId: 0,
gridId: 0,
createValues : [
{
"field": "ID",
"value": "40212"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "Table",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "log",
"value": "TEST1"
},
{
"field": "crea",
"value": "TEST1"
},
{
"field": "off",
"value": "TEST1"
},
]
};
obj2.createValues.splice(0,2)
obj2.createValues.splice(4,4)
我想洗掉off、crea、log、table和id。基本上通過拼接我洗掉了所有內容,但“表格”欄位位于中間,所以我不知道如何
uj5u.com熱心網友回復:
splice() 方法在陣列中回傳已洗掉的專案,而 slice() 方法將陣列中的選定元素作為新的陣列物件回傳。
您可以使用洗掉運算子或filter()
uj5u.com熱心網友回復:
這里我根據值洗掉重復的物件,您可以根據需要編輯此代碼以洗掉多個物件。
let newArray = [];
let removeDuplicate = [];
obj2.createValues.forEach(ele => {
if (!removeDuplicate.includes(ele.value)) {
removeDuplicate.push(ele.value);
newArray.push(ele);
}
})
const newObj = {...obj2, createValues: newArray}
console.log(newObj)
uj5u.com熱心網友回復:
注意:問題代碼中最后一個元素之后缺少結束陣列標記 ]。
如果 Splice 回傳undefined ,我不確定您對Splice進行了哪些嘗試,但這是一個創建新陣列的有效解決方案,洗掉前 2 個索引值上的元素。
let obj2 = {
projectId: 0,
gridId: 0,
createValues : [
{
"field": "ID",
"value": "40212"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "Table",
"value": "TEST1"
},
{
"field": "hello",
"value": "TEST1"
}
]
};
const newObj2 = obj2.createValues.splice(2);// will delete first 2 elements
console.log(newObj2);
uj5u.com熱心網友回復:
您可以使用過濾器來做到這一點,我創建了一個名為“removeFieldFromArray”的函式,它將接受兩個引數。
需要修改的陣列(在您的情況下為 obj2.createValues)
將包含您要洗掉的欄位的陣列在您的情況下: ['off', 'crea', 'log', 'table', 'ID'] 函式將回傳修改后的陣列,其中不包含您第二次傳遞的欄位范圍。
這是功能:
function removeFieldFromArray(array, fields) { return array.filter(r => !fields.includes(r.field)) }
只需像這樣覆寫 obj2.createValues :
obj2.createValues = removeFieldFromArray(obj2.createValues, ['off', 'crea', 'log', 'table', 'ID']) console.log(obj2)
uj5u.com熱心網友回復:
您可以使用該功能Array.prototype.filter
過濾掉那些不滿足條件的元素。
該函式filter
回傳一個包含滿足條件的元素的新陣列。
const obj = { projectId: 0, gridId: 0, createValues : [ { "field": "ID", "value": "40212" }, { "field": "FLD_STR_101", "value": "TEST1" }, { "field": "FLD_STR_101", "value": "TEST1" }, { "field": "FLD_STR_101", "value": "TEST1" }, { "field": "Table", "value": "TEST1" }, { "field": "FLD_STR_101", "value": "TEST1" }, { "field": "log", "value": "TEST1" }, { "field": "crea", "value": "TEST1" }, { "field": "off", "value": "TEST1" }, ] },
targetValues = ["log", "off", "crea", "ID", "Table"],
key = "field",
filterHandler = o => !targetValues.includes(o[key]);
obj.createValues = obj.createValues.filter(filterHandler);
console.log(obj);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
有一些方法可以做到:
array.pop()
– 從陣列的末尾洗掉。
array.splice()
– 從特定陣列索引中洗掉。
array.shift()
– 從陣列的開頭洗掉。
array.slice()
– 洗掉不需要的專案并回傳需要的專案。
array.filter()
- 允許您以編程方式從陣列中洗掉元素
- appdividend.com
我建議使用 filter 方法,它會根據其中的每個條件回傳一個新陣列。
uj5u.com熱心網友回復:
這是使用回圈的一種方法。
let obj2 = {
projectId: 0,
gridId: 0,
createValues : [
{
"field": "ID",
"value": "40212"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "Table",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "log",
"value": "TEST1"
},
{
"field": "crea",
"value": "TEST1"
},
{
"field": "off",
"value": "TEST1"
},
]
};
let array = []
obj2.createValues.forEach((value, index) => {
if(value.field !== "ID" && value.field !== "log" && value.field !== "off" && value.field !== "crea" && value.field !== "Table") {
array.push(value)
}
})
obj2.createValues = array
console.log(obj2)
uj5u.com熱心網友回復:
編輯:希望這個對你有幫助
let obj2 = {
projectId: 0,
gridId: 0,
createValues : [
{
"field": "ID",
"value": "40212"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "Table",
"value": "TEST1"
},
{
"field": "FLD_STR_101",
"value": "TEST1"
},
{
"field": "log",
"value": "TEST1"
},
{
"field": "crea",
"value": "TEST1"
},
{
"field": "off",
"value": "TEST1"
}
]
};
let filterValue = obj2.createValues.filter(function(em) {
return (em.field !== "ID" &&
em.field !== "Table" &&
em.field !== "log" &&
em.field !== "crea" &&
em.field !== "off")
})
console.log('filterValue : ', filterValue )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/494709.html
標籤:javascript 反应 数组 json 目的