我正在尝试反转键/值。
所以,我正在尝试这样的事情:
var _ = require('underscore');
var myObj = [
{'name': 'Mike', 'number' : 'b1' , 'level' : 0 },
{'name': 'Tom', 'number' : 'b2' , 'level' : 0 }
];
Object.keys(myObj).forEach(function(k) {
_.invert(myObj[k]);
});
console.log(myObj);
所以,我想收到:
{'Mike': 'name', 'b1' : 'number' , '0' : level },
{'Tom': 'name', 'b2' : 'number' , '0' : level }
但是上面再次给了我最初的对象。
答案 0 :(得分:1)
Lodash _.invert
只返回一个新的反转对象,因此您需要使用返回的对象更新数组元素。此外,不需要 Object.keys
,因为它是一个数组 Array#forEach
就足够了。
var myObj = [
{
'name': 'Mike',
'number': 'b1',
'level': 0
}, {
'name': 'Tom',
'number': 'b2',
'level': 0
}
];
myObj.forEach(function(v, k) {
myObj[k] = _.invert(v);
});
console.log(myObj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.js"></script>
如果您想生成新的倒置数组,请使用 Array#map
方法。
var res = myObj.map(_.invert);
var myObj = [
{
'name': 'Mike',
'number': 'b1',
'level': 0
}, {
'name': 'Tom',
'number': 'b2',
'level': 0
}
];
var res = myObj.map(_.invert);
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.js"></script>
答案 1 :(得分:1)
_.invert()
不会改变输入对象。这就是你需要的:
var myObj = [
{'name': 'Mike', 'number' : 'b1' , 'level' : 0 },
{'name': 'Tom', 'number' : 'b2' , 'level' : 0 }
];
// ES6 one-liners with arrow function
// with array input
var invertedObj = myObj.map(k => { _.invert(myObj[k]) });
// with object input
var invertedObj = Object.keys(myObj).map(k => { _.invert(myObj[k]) });
// ES5
// with array input
var invertedObj = myObj.map(function(k) {
return _.invert(myObj[k]);
});
// with object input
var invertedObj = Object.keys(myObj).map(function(k) {
return _.invert(myObj[k]);
});
答案 2 :(得分:1)
这应该做你想要的:
$("#play").click(function() {
if ($("#options").val() != "none") { // NOTE: not working
$(this).hide();
$("#options").hide();
$("#player").show();
}else {
alert("You haven't selected a theme")
}
});
答案 3 :(得分:0)
首先,您的Object.keys()
是一个数组,而不是一个对象,因此无需对其执行var array = [
{'name': 'Mike', 'number' : 'b1' , 'level' : 0 },
{'name': 'Tom', 'number' : 'b2' , 'level' : 0 }
];
var myNewArray = array.map(object => {
var box = {};
Object.keys(object).forEach(key => {
box[object[key]] = key;
});
return box;
});
。
select * from mytable
where myfield in
(
SELECT regexp_substr(:bindvar,'[^,]+', 1, level) items
FROM dual
CONNECT BY regexp_substr(:bindvar, '[^,]+', 1, level) is not null
);