我正在尝试从JSON检查并推送对象详细信息中的对象。
这是我的JSON的样子
{
"stylesheet": {
"attribute-set": [
{
"attribute": [
{
"_name": "text-align",
"__prefix": "xsl",
"__text": "end"
},
{
"_name": "end-indent",
"__prefix": "xsl",
"__text": "10pt"
}
],
"_name": "odd__header",
"__prefix": "xsl"
},
{
"attribute": {
"_name": "font-weight",
"__prefix": "xsl",
"__text": "bold"
},
"_name": "pagenum",
"__prefix": "xsl"
}
],
"_xmlns:xsl": "http://www.w3.org/1999/XSL/Transform",
"_xmlns:fo": "http://www.w3.org/1999/XSL/Format",
"_version": "2.0",
"__prefix": "xsl"
}
}
现在,我正在尝试读取属性设置值[1] ,即; “ pagenum” 。在这里,我试图检查名称的更多属性值。如果不存在,则将其推入该属性集中。
我将 attribute-set [0 ]放入array并没有任何问题。在这里,我在 attribute-set [1]中得到了一个对象。
将此属性用于attr-set [1],但抛出错误-Uncaught TypeError: $scope.contentObj.stylesheet.attribute-set[1].attribute.some is not a function
//for checking font name
var checkcontentPageFont = obj => obj._name === 'font-family';
// check font family
var checkcontentPageFont_available = $scope.contentObj.stylesheet["attribute-set"][1].attribute.some(checkcontentPageFont);
if(checkcontentPageFont_available === true ){
}
else{
$scope.contentObj.stylesheet["attribute-set"][1].attribute.push({
"_name": "font-family",
"__prefix": "xsl",
"__text": "sans"
}
);
}
如果存在像 attribute-set [0] 这样的数组,我可以成功实现上述代码。如何检查单个对象。如果未找到,则push和一个数组将在 attribute-set [1] 吗?
答案 0 :(得分:0)
在您的示例中,$scope.contentObj.stylesheet.attribute-set[0].attribute
确实是一个数组,而$scope.contentObj.stylesheet.attribute-set[1].attribute
是一个对象,该原型没有some()
方法。我认为这只是一个错字,所以我将$scope.contentObj.stylesheet.attribute-set[1].attribute
更改为一个数组,现在一切似乎都可以正常工作:
const data = {
"stylesheet": {
"attribute-set": [
{
"attribute": [
{
"_name": "text-align",
"__prefix": "xsl",
"__text": "end"
},
{
"_name": "end-indent",
"__prefix": "xsl",
"__text": "10pt"
}
],
"_name": "odd__header",
"__prefix": "xsl"
},
{
"attribute": [
{
"_name": "font-weight",
"__prefix": "xsl",
"__text": "bold"
},
{
"_name": "pagenum",
"__prefix": "xsl"
}
]
}
],
"_xmlns:xsl": "http://www.w3.org/1999/XSL/Transform",
"_xmlns:fo": "http://www.w3.org/1999/XSL/Format",
"_version": "2.0",
"__prefix": "xsl"
}
}
const checkcontentPageFont = obj => obj._name === 'font-family';
const checkcontentPageFont_available = data.stylesheet["attribute-set"][1].attribute.some(checkcontentPageFont);
if (!checkcontentPageFont_available) {
data.stylesheet["attribute-set"][1].attribute.push({
"_name": "font-family",
"__prefix": "xsl",
"__text": "sans"
});
}
console.log(data);