JavaScript/VueJS:检查数组是否包含具有特定值的元素的对象
我想解决这个问题: 我得到了一个包含名为JavaScript/VueJS:检查数组是否包含具有特定值的元素的对象,javascript,vue.js,Javascript,Vue.js,我想解决这个问题: 我得到了一个包含名为specs的属性的对象。此属性包含对象的数组,这些对象都有两个属性: 名字 价值观 所以我的目标是这样的: Object -Title -Date -Specs [Array] -- [0] Name: "Power" -- [0] Value: 5 -- [1] Name: "Weight" -- [1] Value: 100 所以-现在我想检查一下,我的Specs数组是否包含一个名为“Power”的项。如果是这种情况,我想使用这个元素的值 如何解
specs
的属性的对象。此属性包含对象的数组
,这些对象都有两个属性:
- 名字
- 价值观
所以我的目标是这样的:
Object
-Title
-Date
-Specs [Array]
-- [0] Name: "Power"
-- [0] Value: 5
-- [1] Name: "Weight"
-- [1] Value: 100
所以-现在我想检查一下,我的Specs数组是否包含一个名为“Power”的项。如果是这种情况,我想使用这个元素的值
如何解决这个问题?考虑主要对象名是objTemp
$.each(object.Specs,function(index,obj){
if(obj.Name === "Power")
var myVar = obj.Value
});
你能行
var arrR = objTemp.Specs.filter(function(ele){
return (ele.Name == "Power")
});
if(arrR.length)
//has prop
else
// no prop
您可以在数组上使用方法,该方法将根据您的条件返回true或false,如下所示:
var powerIndex
var doesPowerExist = yourObj.specs.some((spec, index) => {
var powerIndex = index
return spec.name == "Power"
})
您可以使用doesPowerExist
var来决定是否使用此元素的值。您可以基于name属性筛选数组,并检查筛选器是否返回结果数组,如果是,则可以将其与索引一起使用以获取值
var data={specs:[{Name:“Power”,Value:“1”}{
名称:“重量”,值:“2”},{名称:“高度”,值:“3”}
var valObj=数据规格过滤器(函数(elem){
if(elem.Name==“Power”)返回元素值;
});
如果(valObj.length>0)
console.log(valObj[0].Value)
如果使用'some'而不是'each',则一旦找到有效的obj,循环将停止。谢谢,我直到现在才知道。非常有用虽然此代码可以回答问题,但提供有关此代码为什么和/或如何回答问题的附加上下文可以提高其长期价值。好的-如果arrR
为真,我如何访问ele.value
?在这种情况下,我必须获取数组元素的索引,对吗?@SPQRInc arrR是一个名为“Power”的对象数组,因此您可以在arrR上迭代,并以arrR[0]的形式获取值。值等等您好,非常感谢您的回答。现在,doesPowerExist
将是true
或false
,对吗?我如何访问值其中spec.name=“Power”
?@SPQRInc我已修改代码,powerIndex
将是相应对象的索引,如果doesPowerExist
为真,则使用此选项。