Поэтому у меня есть эта проблема, когда я заполняю диапазон ввода, используя данные, поступающие из внешнего json файла...
Таким образом, в основном данные имеют кучу объектов с массивом значений и текста в каждом объекте. Но некоторые из объектов не имеют последовательных значений для циклического перемещения и выводятся на ползунке диапазона следующим образом:
var someObj = [
{
value: 1,
text: 'A'
},
{
value: 2,
text: 'B'
},
{
value: 3,
text: 'C'
},
{
vaule: 5,
text: 'D'
},
{
value: 6,
text: 'E'
},
{
vaule: 8,
text: 'F'
}
];
Обратите внимание, что Value: 4 и значение: 7 отсутствуют, это тоже может измениться, в некоторых объектах значение: 11 и значение: 13 тоже отсутствуют.
Таким образом, в основном то, что мне нужно достичь, - это цикл через каждый объект, и если отсутствуют значения, чтобы добавить значение и дублировать текстовое значение из значения, прежде чем, например,...
var someObj = [
{
value: 1,
text: 'A'
},
{
value: 2,
text: 'B'
},
{
value: 3,
text: 'C'
},
{
vaule: 5,
text: 'D'
},
{
value: 6,
text: 'E'
},
{
vaule: 8,
text: 'F'
}
];
Станет
var someObj = [
{
value: 1,
text: 'A'
},
{
value: 2,
text: 'B'
},
{
value: 3,
text: 'C'
},
{
value: 4,
text: 'C'
},
{
vaule: 5,
text: 'D'
},
{
value: 6,
text: 'E'
},
{
vaule: 7,
text: 'E'
},
{
vaule: 8,
text: 'F'
}
];
Возможно ли это, и если да, то каким образом я бы об этом подумал?
заранее спасибо
var i=0;
do{
if(someObj[i].value!=i+1){
var obj = {}
debugger;
obj['value']= i+1;
obj['text']= someObj[i-1].text;
someObj.splice(i,0,obj);
}
i++;
}while(i<someObj.length);
обратитесь к этому: https://jsfiddle.net/cw5kkpgu/
Получить последнее значение объекта, например
var someObjLength = someObj[someObj.length-1].value;
А также
for(i = 0; i < someObjLength-1; i++) {
if(someObj[i].value != (i+1)){
someObj.splice(i, 0, {value: i+1, text: someObj[i-1].text})
}
}
Я создал функцию js для завершения отсутствующих объектов. Дайте мне знать, если это сработает.
function completeObject(someObj)
{
var otherObj = [];
for(var obj in someObj)
{
otherObj[someObj[obj]['value']] = someObj[obj];
}
var j = 0;
for(var i =1 ; i <= someObj[someObj.length-1]['value'];i++)
{
if(otherObj[i] === undefined)
{
var obj = {}
obj['value']= i;
obj['text']= otherObj[j]['text'];
otherObj.push(obj);
}
else
{
j = i ;
}
}
return otherObj;
}
Хорошо, я, наконец, решил это сейчас, извините, не понял сначала, что вы были, но здесь Plunker для него:
http://plnkr.co/edit/n1tSfj2YJMeBZNZCSAF3?p=preview
Пожалуйста, подтвердите, если это :)
Суть его в следующем:
$scope.loop = function(){
var previousText = '';
var previousValue = '';
var newObject = [];
angular.forEach($scope.someObj, function(object){
if(object.value == 1){
newObject.push(object);
previousText = object.text;
previousValue = object.value;
console.log("value:" + previousValue + " | Text:" + previousText);
}
else {
if(object.value != (previousValue + 1)){
while (object.value != (previousValue + 1)){
previousValue += 1;
newObject.push({ value: previousValue, text: previousText})
console.log("value:" + previousValue + " | Text:" + previousText);
}
}
else{
newObject.push(object);
previousValue = object.value;
console.log("value:" + previousValue + " | Text:" + previousText);
}
previousText = object.text;
}
});
// Add the last value as it always missed
newObject.push($scope.someObj[$scope.someObj.length - 1])
$scope.someObj = newObject;
}