脚本调试器确认JSON键和字符串之间的预期条件检查,但是我得到了一个不希望的结果
Script debugger confirms intended conditional check between JSON key and string, however I am getting an undesired result?
我希望修改我从这个方便的Json-to-HTML-Table脚本中获得的输出表,我在SO上偶然发现了这个脚本。在 JSON -to-table.js传递JSON对象并生成用作表头的数组键的地方(第86行)。可选地,此array_key
函数只能为传递的指定search_value
参数生成一个键。然而,我[试图]修改它,以便返回所有不匹配search_value
的数组键。下面是我修改后的函数:
function array_keys(input, search_value, argStrict)
{
var search = typeof search_value !== 'undefined', tmp_arr = [], strict = !!argStrict, include = '', key = '';
if (input && typeof input === 'object' && input.change_key_case) { // Duck-type check for our own array()-created PHPJS_Array
return input.keys(search_value, argStrict);
}
for (key in input)
{
if (input.hasOwnProperty(key))
{
include = false;
if (search)
{
if (strict && input[key] == search_value)
include = false;
else if (input[key] == search_value)
include = false;
else
include = true;
}
if (include)
tmp_arr[tmp_arr.length] = key;
}
}
return tmp_arr;
}
现在,我这样做的原因是因为我希望生成的表不包含JSON对象中的特定列:
{
"examItemCategories": [
{
"catgoryName": "01-Normal processes",
"catgoryPath": "General Area''01-Normal processes",
"numberOfItems": 2,
"percentage": "6.06"
}
]
}
鉴于我不能修改传入的原始JSON obj,我正在确定是否尝试修改表后创建(例如删除列),或期间。在查看了array_keys
函数之后,我觉得我可以很容易地为search_value
反转条件检查。
我现在从json到表脚本调用array_keys(parsedJson[0], 'catgoryPath');
。(是的,catgoryPath是正确拼写的名称哈哈)。然后,我在array_keys
函数中的for循环中设置了一个断点,以便在Firebug中跟踪它。
第一次迭代:catgoryName
被添加到tmp_arr
,第二次迭代:catgoryPath
被添加到tmp_arr
…并继续进行第三和第四次迭代。我不希望添加catgoryPath
。
查看脚本调试器,在第二次迭代中,是否添加catgoryPath
归结为条件:else if (input[key] == search_value)
行。问题是,根据Firebug,在各自的迭代中,key
和search_value
变量都等于"catgoryPath"。因此,include = false;
应该开火正确吗?
感谢任何帮助,为内联代码的长度和自由使用道歉。
不使用json-to-table脚本中的array_keys
函数,如果您使用的是JS> 1.8.5,您可以使用object .keys(obj)来返回给定对象自己的可枚举属性的数组。
返回的键数组然后用作表头,在表头下使用脚本填充JSON数据。在创建表之前,我使用了表头数组和array。splice(index, howMany)而不是delete
(见这里)来保存我的数组索引值
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- Amd,希望确保某个东西总是最后执行
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 我希望只有在我滚动页面后才能显示我的返回页首图标
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 动态添加 CSS 类会导致紧接着出现不希望的结果
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 如何隐藏搜索结果框,我希望它们在点击并激活键控功能时显示
- 指令实例共享Ajax结果,但我不希望它们共享
- 我希望结果进入主页
- 通过jQuery重新排列表行,在IE中产生不希望的结果
- 从lodash填充与常规数组填充数组时产生的不希望的结果
- 在JavaScript中使用toFixed(2)会产生不希望的结果
- 脚本调试器确认JSON键和字符串之间的预期条件检查,但是我得到了一个不希望的结果