我已按以下格式将值存储在对象中,
$scope.modelName = {
name: {}
};
该值的存储方式与{"APLLE":true,"ORANGE":true}
类似。我试图只获取密钥,我试图使用for循环将其存储在另一个对象中。我无法获得价值
for (var i = 0; i < 2 ; i++) {
$scope.fruitRulesRules.push({
field: "fruitName",
subType: "equals",
value: Object.Keys($scope.modelName.name[i])
});
}
提前致谢。
答案 0 :(得分:1)
Object.keys()
返回对象中的键数组。您需要选择用于索引循环的键。你很亲密,但没有雪茄。
请参阅小提琴:http://jsfiddle.net/pzky9owf/1/
var modelName = {
name: {
APPLE: true,
ORANGE: true
}
},
fruitRulesRules = [];
for (var i = 0; i < 2; i++) {
fruitRulesRules.push({
field: 'fruitName',
subType: 'equals',
/*
This bit was close. You could could also cache the Object.keys in
another variable so its not called in every itteration of the loop if it doesnt change often
*/
name: Object.keys(modelName.name)[i]
});
}
console.log(fruitRulesRules);
编辑:你还有Object.Keys
,大写K
,它的小写k
,但我认为这是写小提琴的错字。
再次编辑:正如@KrzysztofSafjanowski在另一条评论中提到的那样,你无法保证Object.keys()
的顺序,所以即使上述作品有效也可能无法达到预期效果。
我已经更新了小提琴,以显示键的顺序不重要的不同方式:http://jsfiddle.net/pzky9owf/2/
答案 1 :(得分:0)
我相信您正在访问密钥错误,这会给您一些见解吗?
Object.keys({"APLLE":true,"ORANGE":true})[0] //returns "Apple"
所以你的解决方案可能是:
Object.Keys($scope.modelName.name)[i]