我有一个数组,在任何时候都可能包含以下值的任意组合:
var positions = ['first', 'second', 'third', 'fourth'];
目标是重建一个Javascript对象,默认情况下设置为:
currentPositioning = { 'positioning': [
{ 'first': false },
{ 'second': false },
{ 'third': false },
{ 'fourth': false }
]
};
使用位置数组来重建currentPositioning对象:
positions.forEach(setPositions);
function setPositions(element, index, array) {
if (element == 'first') {
// define objSplice object
var objSplice = {};
// set object of 'array.element' to false .. {'element': false}
objSplice[element] = false;
console.log('objSplice = ' + JSON.stringify(objSplice));
// find index that matches {'element': false}
var index = currentPositioning["positioning"].indexOf( objSplice );
console.log('index = ' + index);
if (index > -1) {
// remove index that matches {'element': false}
currentPositioning["positioning"].splice(index, 1);
}
// define obj object
var obj = {};
// set obj object of 'array.element' to true .. {'element': true}
obj[element] = true;
// add {'element': true} to array
currentPositioning["positioning"].push( obj );
}
if (element == 'second') {
...
基本上,如果其中一个位置位于位置数组中,那么currentPositioning对象中的该位置应设置为true
..否则它应保持false
这个想法是......当......
var positions = ['first', 'second', 'third'];
..然后..
currentPositioning = { 'positioning': [
{ 'first': true },
{ 'second': true },
{ 'third': true },
{ 'fourth': false }
]
};
出于某种原因,现在index = -1
..每次..所以结果不断变成这样的东西!? :
currentPositioning = { 'positioning': [
{ 'first': false },
{ 'second': false },
{ 'third': false },
{ 'fourth': false },
{ 'first': true },
{ 'second': true },
{ 'third': true },
]
};
答案 0 :(得分:2)
您可以使用Underscore.js执行此操作(我添加了一些临时变量以提高可读性):
var positions = ['first', 'second', 'third'];
var updatedPositions = _.map(['first', 'second', 'third', 'fourth'], function(p) {
var json={};
json[p] = _.contains(positions,p);
return json;
});
var currentPositioning = { 'positioning': [
updatedPositions
]
};