let arr = {name:''} 如何判断 arr 有name属性,并且name属性还有值
时间: 2023-02-14 07:29:34 浏览: 89
可以使用 "in" 运算符来判断对象是否具有某个属性,例如:
```
if ("name" in arr) {
// arr 有name属性
}
```
如果要判断 name 属性有没有值,可以这样写:
```
if ("name" in arr && arr.name) {
// arr 有name属性并且name属性还有值
}
```
也可以用 `arr.hasOwnProperty("name")` 进行判断,它只会检查对象自身是否有这个属性,不会检查它继承了哪些属性。
```
if(arr.hasOwnProperty("name") && arr.name)
```
还有一种写法是使用 typeof 判断
```
if(typeof arr.name !== 'undefined' && arr.name !== null)
```
这种方法可以判断对象中是否有name属性且还有值。
相关问题
let arr=[{name:'a',value:1},{name:'b',value:2}] 求arr最大值
可以使用reduce()方法来得到arr数组中value最大的元素对象。
代码如下:
```
let arr=[{name:'a',value:1},{name:'b',value:2}];
let maxObj = arr.reduce((prev, current) => (prev.value > current.value) ? prev : current);
console.log(maxObj);
```
输出结果为:{name: "b", value: 2}
let arr = [{spuId: 647, name: 'aa'}, {spuId: 648, name: 'bb'}] let b = { spuId: 647} 在js中, 我需要从arr中剔除掉 b中spuId相等的那一项
在JavaScript中,你可以使用`filter()`方法结合`Object.keys()`和`indexOf()`来实现这个需求。首先,你需要找出`b`的对象在`arr`中的索引,然后用`Array.prototype.splice()`方法来删除对应项。这里是一个示例:
```javascript
let arr = [{ spuId: 647, name: 'aa' }, { spuId: 648, name: 'bb' }];
let b = { spuId: 647 };
// 获取b在arr中的索引
let index = arr.findIndex(obj => obj.spuId === b.spuId);
// 如果找到了匹配项
if (index !== -1) {
// 删除匹配项
arr.splice(index, 1);
}
console.log(arr); // 结果将是 [{ spuId: 648, name: 'bb' }]
```
如果你确定`b`的对象一定存在并且只有一个,那么`findIndex()`就能确保找到唯一的一项。如果没有找到,`findIndex()`会返回 `-1`。
阅读全文