3 回答

TA貢獻1798條經驗 獲得超3個贊
您可以轉換為 boolean ( !el.id) 這將處理大多數情況,您必須"undefined"單獨處理:
var arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: "undefined" }
];
var obj1 = {};
var prop1 = [];
var prop2 = [];
arr.forEach(el=>{
if(!el.id || el.id === "undefined"){
prop1.push(el)
}
else{
prop2.push(el)
}
})
console.log(prop1);
console.log(prop2);
console.log(prop1.length);
console.log(prop2.length);

TA貢獻1789條經驗 獲得超8個贊
嘗試這個:
var arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: "undefined" }
];
let filterArray = arr.filter((el) => {return !el.id || [0,null,"undefined",NaN].includes(el.id)});
console.log(filterArray);
let filterArray1 = arr.filter((el) => {return el.id && ![0,null,"undefined",NaN].includes(el.id)});
console.log(filterArray1);

TA貢獻1772條經驗 獲得超5個贊
為什么它不起作用?是順序不正確還是有 JavaScript 錯誤?
代碼乍一看很好,您可以使用 if (!el.id),它檢查 id 是否為“假”(0,null,undefined,NaN,false)
您還可以查看“map”和“filter”方法, https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/map
添加回答
舉報