Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在包含连续数字的数组中查找未知数字_Javascript - Fatal编程技术网

Javascript 在包含连续数字的数组中查找未知数字

Javascript 在包含连续数字的数组中查找未知数字,javascript,Javascript,我有一个这样的数组 var specialOne = 3; var array = [{value:"special"},{value:"1"},{value:"2"},{value:"specialOne"},{value:"4"},{value:"special"}]; 我需要把它转换成这个数组 var temp = [{value:"0"},{val

我有一个这样的数组

var specialOne = 3;
var array = [{value:"special"},{value:"1"},{value:"2"},{value:"specialOne"},{value:"4"},{value:"special"}];
我需要把它转换成这个数组

var temp = [{value:"0"},{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"}];
特殊的
应替换为适当的值

specialOne
应替换为给定的编号

我该怎么做

更多示例:

0,special,2,special,4,5 => 0,1,2,3,4,5
7,8,9,special => 7,8,9,10
special,special,10 => 8,9,10

也许这就是你想要的

var=3;
var array1=[{value:“特殊”},{value:“1”},{value:“2”},{value:“特殊”},{value:“特殊”},{value:“特殊”}];
函数addspec(specialOne){
数组1.forEach((o,i)=>{
如果(o.value==“specialOne”)o.value=specialOne.toString()
如果(o.value==“特殊”)o.value=array1[i-1]?(parseInt(array1[i-1].value)+1.toString():“0”
})
}
增补规范(3)
console.log(array1)
这可能会对您有所帮助

var=3;
变量数组=[
{value:“特殊”},
{value:“1”},
{value:“2”},
{value:“specialOne”},
{value:“4”},
{value:“特殊”}
];
对于(i=0;i
for(设i=0;i
当需要修改数组时,应首先尝试使用“for”循环。它是最有效的,因为它不会修改数组的索引,也不会返回新数组(假设您必须在数组中修改10000项…)

这里很简单,你就是数组,如果条件匹配,你就修改数组本身的值

var=3;
变量数组=[{
价值:“特别”
}, {
值:“1”
}, {
值:“2”
}, {
价值观:“特别孤独”
}, {
值:“4”
}, {
价值:“特别”
}];
函数getValues(数组){
设反同步=0;
让回溯检查=[];
让流入=假;
让backCheckOnce=false;
返回数组.map((m,i)=>{
if(isNaN(parseInt(m.value))){
if(流入| |窗口[m.值]){
m、 value=”“+(窗口[m.value]| |(反同步+1));
}否则{
如果(i==0){
backCheckOnce=true;
}
回溯检查。推送(m);
}
}否则{
流入=真;
//只做一次反向检查
如果(反向检查一次){
backCheck.reverse().forEach((x,idx)=>x.value=“”+(+m.value-1));
backCheckOnce=false;
}
}
反同步=+m.value;
返回m;
});
}

log(getValues(数组))我不确定你想要什么-太混乱了。您可以这样做:
for(var i=0;iNo,如果以5开头,则必须是示例:5,6,特殊,8=>5,6,7,8@YavuzSelimÖzmen已更新。我看到的唯一问题是对象应始终以数字开头,而不是
special
specialOne
@YavuzSelimÖzmen嘿,我还将第一个值固定为
special
。使用前一定要理解代码(它可以重构)请试着详细解释一下这段代码的工作原理。
for (let i = 0; i < array.length; i++) {
   if (array[i].value === "special") array[i].value = i.toString();
   if (array[i].value === "specialOne") array[i].value = specialOne.toString();  
};