JavaScript / VueJS:检查数组是否包含具有特定值的元素的对象

时间:2017-02-03 11:31:11

标签: javascript vue.js

我想解决这个问题:

我有一个包含名为specs的属性的Object。此属性包含Array Objects,它们都具有2个属性:

  • 名称

所以我的目标是这样的:

Object
-Title
-Date
-Specs [Array]
-- [0] Name: "Power"
-- [0] Value: 5
-- [1] Name: "Weight"
-- [1] Value: 100

所以 - 现在我想检查一下,如果我的Specs-Array包含一个名为" Power"的项目。如果是这种情况,我想使用这个元素的值。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:10)

您可以根据name属性过滤数组,并检查过滤器是否返回结果数组,如果是,则可以将其与index一起使用以获取值。

$string="";//your string
$string=str_replace("]}","]",$string);
$arr=explode("},",str_replace("={rem=",",",$string));

foreach($arr as $key=>$value){
    $str=explode(",",$value);
    $data[$key]["key"] = intval($str[0]);
    $data[$key]["rem"] = $str[1];
    $data[$key]["ans"] = explode("ans=", $value)[1];
}
echo "<pre>";
print_r($data);

答案 1 :(得分:3)

考虑主要对象名称是objTemp

你可以做到

var arrR = objTemp.Specs.filter(function(ele){
   return (ele.Name == "Power")
});

if(arrR.length)
  //has prop
else
  // no prop

答案 2 :(得分:0)

$.each(object.Specs,function(index,obj){
if(obj.Name === "Power")
var myVar = obj.Value
});

答案 3 :(得分:0)

你可以在数组上使用some方法,它将返回true或false,具体取决于你的条件,如下所示:

var powerIndex
var doesPowerExist = yourObj.specs.some((spec, index) => {
   var powerIndex = index
   return spec.name == "Power"
})

您可以使用doesPowerExist var来决定是否使用此元素的值。