Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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,我有一个对象数组,如果它以“/”开头,我将尝试修改该值。如果满足条件,我想在这之前添加“https:”。然后该值应该类似于“https://”。我已经做了以下工作。我想不出问题出在哪里 var项目=[ { 值:“/”, 标签:“jQuery”, desc:“写得少,做得多,JavaScript库”, 图标:“jquery_32x32.png” }, { 值:“/”, 标签:“jQueryUI”, desc:“jQuery的官方用户界面库”, 图标:“jqueryui_32x32.png” }]

我有一个对象数组,如果它以“/”开头,我将尝试修改该值。如果满足条件,我想在这之前添加“https:”。然后该值应该类似于“https://”。我已经做了以下工作。我想不出问题出在哪里

var项目=[
{
值:“/”,
标签:“jQuery”,
desc:“写得少,做得多,JavaScript库”,
图标:“jquery_32x32.png”
},
{
值:“/”,
标签:“jQueryUI”,
desc:“jQuery的官方用户界面库”,
图标:“jqueryui_32x32.png”
}];
const string1=“https:”;

const objIndex=projects.findIndex(obj=>obj.value.indexOf('/')==0?obj.value==string1.concat(obj.value):obj.value==obj.value);控制台日志(objIndex)您可以使用
.forEach()

var项目=[
{
值:“/”,
标签:“jQuery”,
desc:“写得少,做得多,JavaScript库”,
图标:“jquery_32x32.png”
},
{
值:“/”,
标签:“jQueryUI”,
desc:“jQuery的官方用户界面库”,
图标:“jqueryui_32x32.png”
},
{
值:“http://”,
标签:“jQueryUI”,
desc:“jQuery的官方用户界面库”,
图标:“jqueryui_32x32.png”
}];
const str='https:';
常量目标='/';
projects.forEach(p=>{if(p.value===target){p.value=str+target})
console.log(projects)
您需要输入
属性,然后检查
列是否包含以下符号
/

const result = projects.map(({value, ...rest}) => 
    ({ value: value.startsWith('//') ? `https://` : value, ...rest}))
例如:

var项目=[
{
值:“/”,
标签:“jQuery”,
desc:“写得少,做得多,JavaScript库”,
图标:“jquery_32x32.png”
},
{
值:“/”,
标签:“jQueryUI”,
desc:“jQuery的官方用户界面库”,
图标:“jqueryui_32x32.png”
}];
常量string1='https:';
const result=projects.map(({value,…rest})=>({value:value.startsWith('/')?`https://`:value,…rest}))
console.log(结果)
给你

projects.forEach((obj) => {
  if (obj.value === '//') {
    obj.value = 'https://';
  }
});

首先,字符串变量定义中有一个错误,在这里使用不同的引号字符:
conststring1='https:;
您可以使用“reduce”创建一个新数组

let项目=[
{
值:“//google.com”,
标签:“jQuery”,
desc:“写得少,做得多,JavaScript库”,
图标:“jquery_32x32.png”
},
{
值:“/”,
标签:“jQueryUI”,
desc:“jQuery的官方用户界面库”,
图标:“jqueryui_32x32.png”
}];
让stringToReplace=“https:”;
让objIndex=projects.reduce((arr,item)=>(item.value=item.value.replace(/(\/\/.*)/,`${stringToReplace}$1`),arr.push(item,arr),[]);

console.log(objIndex)
这里有多个概念问题:
findIndex
不会在所有数组上循环,它会在找到的第一个项处停止。此外,赋值是使用
=
,而不是
==
。此外,如果以
'
开始字符串,则建议以
'
结束。我建议修复问题的根源。替换
/使用
https://
进行de>是一种假设,它可能是正确的,也可能是不正确的。只需正确存储协议以避免将来出现问题。@Satpal请不要将语法错误修复为编辑错误。OP必须重新确认错误,以静默方式更正它可以使问题保留在原始版本中code@Kaddath在我看来,呃,ror一定是OP在发布问题时引入的。根据问题描述,我确信语法错误不是他的问题。不过,感谢您的建议:)OP想更新
值,如果它以
/
包含()
方法将返回true,即使
/
不是在开头,而是在字符串中的任何位置。@Yousaf非常感谢!我已更新了我的答案。感谢您的关注!