如何在javascript中区分对象数组?
如何区分数组是否为简单数组 f、 e 或一组对象 f、 e 下面的数字够了吗如何在javascript中区分对象数组?,javascript,arrays,object,Javascript,Arrays,Object,如何区分数组是否为简单数组 f、 e 或一组对象 f、 e 下面的数字够了吗 const isObject = (obj) => typeof obj === 'object' && obj !== null isArray(objectArr) && objectArr.every(isObject) 也许这不是一种直接的方法,但您可以尝试对阵列进行深度复制。您可以在javascript中看到,在对象等非基本值之间进行比较时,即使它们具有完全相同的属性
const isObject = (obj) => typeof obj === 'object' && obj !== null
isArray(objectArr) && objectArr.every(isObject)
也许这不是一种直接的方法,但您可以尝试对阵列进行深度复制。您可以在javascript中看到,在对象等非基本值之间进行比较时,即使它们具有完全相同的属性,也会返回false
{foo: "bar"} === {foo: "bar"} // false
const simplerr=[“嗨”,“1”,“3”,“5”,“这是一个字符串”,29999]
常量objectArr=[
{el1:“你好”,el2:“你好”},
{el1:“hi2”,el2:“hi2”},
{el1:“hi3”,el2:“hi3”},
{el1:“hi4”,el2:“hi4”},
]
函数deepCopy(数组){
返回JSON.parse(JSON.stringify(array));
}
函数isSimple(数组){
const copy=deepCopy(数组);
返回数组.every((el,index)=>el==copy[index]);
}
log(“simplear:,isSimple(simplear))
log(“objectArr:,isSimple(objectArr))
您可以这样做
const isObject=item=>typeof item==“object”
&& !数组.isArray(项目)
&&物品!==无效的
const simplerr=[“hi”,“1”,“3”,“5”,“这是一个字符串”,29999];
const数组_of_objects=[{el1:“hi”,el2:“hi”},{el1:“hi2”,el2:“hi2”},{el1:“hi3”,el2:“hi3”},{el1:“hi4”,el2:“hi4”};
console.log(simplerr.every(isObject));//假的
console.log(对象数组,每个对象(isObject));//是的,你可以这样做。只需确保同时检查功能
让simplerr=[
“嗨”,
"1",
3.
"5",
“这是一个字符串”,
29999,
功能,
];
设objectArr=[{
el1:“你好”,
el2:“你好”,
},
{
el1:“hi2”,
el2:“hi2”,
},
{
el1:“hi3”,
el2:“hi3”,
},
{
el1:“hi4”,
el2:“hi4”,
},
];
常量isSimpleArray=arr=>
!好的(
x=>x!=null&&(typeof x==“object”| | typeof x==“function”)
);
log(isSimpleArray(SimpleArray));
log(isSimpleArray(objectArr))代码>不要忘记“函数”:如果要检查所有成员是否都是对象-是。但是当数组包含对象和其他数据时,这将返回false
,例如[{},true,{}]
。这是预期的吗?const isSimpleArray=arr=>!arr.some(x=>typeof x==='object')
@georg是的,也是这样。如果需要任何对象,则需要包含函数,因为它们也是对象。@boxdox[null]
->false
不要这样做。工作太多,很容易失败,因为您可能会丢失数据,从而扭曲结果。
const isObject = (obj) => typeof obj === 'object' && obj !== null
isArray(objectArr) && objectArr.every(isObject)
{foo: "bar"} === {foo: "bar"} // false