我正在尝试迭代一些 Object 键,然后用这些值填充一些 DropDowns。在 PC 上,我尝试过的每个解决方案都可以正常工作 - 不幸的是,在移动设备上却不是。
所以这就是我尝试过的:
- Polyfilling Object.keys
- 在stackoverflow('旧版本')上从某人那里尝试过这种方法:
function getKeys(obj) {
var keys = [];
iterate(obj, function (oVal, oKey) { keys.push(oKey) });
return keys;
}
function iterate(iterable, callback) {
for (var key in iterable) {
if (key === 'length' || key === 'prototype' || !Object.prototype.hasOwnProperty.call(iterable, key)) continue;
callback(iterable[key], key, iterable);
}
}
对象/脚本:
var obj = {
"set1": {
"subSet1": {
"val1": "",
"val2": "",
"val3": ""
},
"subSet2": {
"val1": "",
"val2": "",
"val3": ""
}
}
...
}
var arr = [];
Object.keys(obj["set1"]).forEach(function(key) {
arr.push(obj["set1"][key][val1]);
});
经过一些测试,我可以看出问题是:该for...in
语句在移动设备上不起作用。
因为不可能(?)在移动设备上正确调试,所以我无法提供其他信息。(错误信息或某事)
你们有简单的解决方法吗?
tl/dr:
迭代对象键并用键名填充数组,而不使用for...in
语句
编辑1:只是为了完成事情..这适用于PC,但不适用于移动设备
var testObj = {"a":"aa", "b":"bb", "c":"cc"};
for (var keys in testObj) {
app.alert(keys)
}
for each (var keys in testObj) {
// not working mobile either
}
由于 DropDownLists 不是那么大,我需要完成一些事情,所以我现在将坚持手动创建我需要的数组。不过还是很好奇。