我有一个对象private void selectItem(int position) {
Toast.makeText(MainActivity.this, "Time for an upgrade", Toast.LENGTH_SHORT).show();
// This is where the fragment view changes will be put
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Blank1Fragment();
break;
case 1:
//fragment = new Blank2Fragment();
fragment = new MapsFragment();
break;
case 2:
fragment = new Blank3Fragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerLayout.closeDrawer(mDrawerList);
} else {
}
}
,如:
myObj
要将每个值设置为{
0: true,
1: false,
2: false
}
,我可以使用循环:
true
但是有没有一种功能方法在javascript中执行此操作?类似的东西:
for (i in myObj) {
myObj[i] = true
}
答案 0 :(得分:4)
您想要Object.keys
(如果在您的环境中可用)。它枚举当前对象上的键,跳过原型属性等。
您只需:
function fill(obj) {
Object.keys(obj).forEach(function (key) {
obj[key] = true;
});
}
如果你想真正使用它,你可以使用减少和避免副作用:
function fill(obj) {
return Object.keys(obj).reduce(function (p, key) {
p[key] = true;
return p;
}, {});
}
如果要保留与原始对象相同的原型,假设您正在使用具有无参数构造函数(对象和数组计数)的简单类型,则可以使用obj.constructor
,如:< / p>
function fill(obj) {
return Object.keys(obj).reduce(function(p, key) {
p[key] = true;
return p;
}, new obj.constructor);
}
var filledObject = fill({
bar: false,
baz: 3,
boo: 'test'
});
var filledArray = fill([1, 2, 3, 4, false, 'test']);
document.getElementById('obj').textContent = JSON.stringify(filledObject);
document.getElementById('arr').textContent = JSON.stringify(filledArray);
var evilSparseArray = [1, 2, 3];
evilSparseArray[19] = 4;
document.getElementById('spa').textContent = JSON.stringify(fill(evilSparseArray));
&#13;
<pre id="obj"></pre>
<pre id="arr"></pre>
<pre id="spa"></pre>
&#13;
请注意,不可以正常使用稀疏数组,因为其他键已定义但不具备有意义的数据。
答案 1 :(得分:0)
如果您将索引作为值
,还有另一种方法可以做到这一点 function convertObjectToValue (myObject, val) {
myObject.length = Object.keys(myObject).length;
return Array.prototype.slice.apply(myObject).map(function () {
return val;
}).reduce(function(obj, index, value) {
obj[index] = value;
},{});
}