#javascript #arrays #typescript
#javascript #массивы #typescript
Вопрос:
Входной массив
var array = [
'name',
'"Mobile Number"',
'"mobile1,mobile2"',
'email2',
'Address',
'email21'
]
var matchkey = 'mobile1,mobile2'
res = res.map(function (value) {
if(value==matchkey){
return value ".string()"
}
else {
return value ".auto()"
}
})
Текущий вывод из приведенного выше кода
[
'name.auto()',
'"Mobile Number".auto()',
'"mobile1,mobile2".auto()',
'email2.auto()',
'Address.auto()',
'email21.auto()'
]
Ожидаемый вывод;
[
'name',
'"Mobile Number.auto()"',
'"mobile1,mobile2.string()"',
'email2.auto()',
'Address.auto()',
'email21.auto()'
]
Примечание: я не хочу удалять двойные кавычки, которые находятся внутри одинарных кавычек, потому что это требуется для дальнейшей обработки
Ответ №1:
Ваш ключ соответствия не существует в вашем массиве.
Строка в массиве: ‘»mobile1,mobile2″‘
Совпадающий ключ: ‘mobile1,mobile2’
Вы должны изменить свой ключ соответствия на:
var matchkey = '"mobile1,mobile2"'
Кроме того, я не понимаю вашей цели, но если ожидаемый результат должен иметь строку имени без доступа к функции, тогда вам следует добавить оператор else if:
if(value == matchkey){
return value ".string()";
} else if(value == 'name') {
return value;
} else {
return value ".auto()";
}
Ответ №2:
Возможно, это?
var array = [
'name',
'"Mobile Number"',
'"mobile1,mobile2"',
'email2',
'Address',
'email21'
]
var matchkey = '"mobile1,mobile2"'
const res = array.map(function(value) {
return value == matchkey ? value.slice(0,-1) ".string()"" :
value.endsWith('"') ? value.slice(0,-1) ".auto()" '"' : value ".auto()"
})
console.log(res)
Ответ №3:
Вы можете использовать регулярное выражение для замены:
const result = array.map((element) =>
element.replace(/^("?)(.*?)("?)$/, function () {
return `${
arguments[1]
}${arguments[2] (arguments[2] === matchkey ? '.string()' : '.auto()')}${arguments[3]}`;
})
);
Ответ №4:
Я думаю, что если вы измените с value==matchkey
на value.includes(matchkey)
, это будет ваш желаемый результат.
var array = [
"name",
'"Mobile Number"',
'"mobile1,mobile2"',
"email2",
"Address",
"email21",
];
var matchkey = "mobile1,mobile2";
res = array.map(function (value) {
if (value.includes(matchkey)) {
return value ".string()";
} else {
return value ".auto()";
}
});
console.log(res);