我想解决这个问题:
我有一个包含名为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"的项目。如果是这种情况,我想使用这个元素的值。
我该如何解决这个问题?
答案 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来决定是否使用此元素的值。