刚开始使用Javascript,我正在尝试检查array
中元素的类型:我有一个function
,其中包含两个函数parameters
。我有array
,其中包含string
和number
元素的组合。我们的想法是根据示例functions
中的元素类型触发array
,然后将新的element
推送到新的array
。我不确定我可以在这里使用哪种功能。我尝试了indexOf
和typeof
,但这些似乎不是为了达到目的,也可能是我做错了。下面是代码。非常感谢!
var arr1 = [3, "Hello", 5, "Hola"];
function setNewArray(arr, funct1, funct2){
var arr2 = [];
for(var i = 0; i < arr.length; i++){
if(/*check if arr[i] is a string*/){
arr2.push(funct1(arr[i]));
}
if(/*check if arr[i] is a number*/){
arr2.push(funct2(arr[i]));
}
}
return arr2;
}
var numfunct = function(item){
return item * 2;
}
var strfunct = function(item){
return item + " " + "there";
}
var result = setNewArray(arr1, numfunct, strfunct);
console.log(result);
答案 0 :(得分:3)
您可以使用typeof
轻松完成,例如以下
对于第一个代码块
if(typeof arr[i] === 'string'){
arr2.push(
funct1(arr[i]));
}
第二个
if(typeof arr[i] === 'number'){
arr2.push(
funct2(arr[i]));
}
答案 1 :(得分:1)
检查一下:
var arr1 = [3, "Hello", 5, "Hola" ];
function setNewArray(arr, funct1, funct2){
var arr2 = [];
for(var i = 0; i < arr.length; i++){
if(!isNaN(arr[i])){ // or use this alternative typeof arr[i] == 'number'
arr2.push(
funct1(arr[i]));
}
if(typeof (arr[i]) == 'string'){
arr2.push(
funct2(arr[i]));
}
}
return arr2;
}
var numfunct = function(item){
return item * 2;
}
var strfunct = function(item){
return item + " " + "there";
}
var result = setNewArray(arr1, numfunct, strfunct);
console.log(result);
答案 2 :(得分:1)
创建一个函数对象,其中每个函数名称都是它可以处理的类型。使用Array#map迭代数组,并使用typeof从对象中选择正确的方法。
注意:我添加了一个布尔处理程序,将true
转换为是。
var arr1 = [3, "Hello", 5, "Hola", true];
var fns = {
number(item) {
return item * 2;
},
string(item) {
return item + " " + "there";
},
boolean(item) {
return item ? 'yes' : 'no'
}
};
function setNewArray(arr, fns) {
return arr.map(function(item) {
return fns[typeof item](item);
});
}
var result = setNewArray(arr1, fns);
console.log(result);
答案 3 :(得分:0)
您可以使用typeof
检查任何变量或对象的类型。而且你不需要传递函数refrence。这是代码:
var arr1 = [3, "Hello", 5, "Hola"];
function setNewArray(arr) {
var arr2 = [];
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'string') {
arr2.push(
strfunct(arr[i]));
}
if (typeof arr[i] === 'number') {
arr2.push(
numfunct(arr[i]));
}
}
return arr2;
}
var numfunct = function (item) {
return item * 2;
}
var strfunct = function (item) {
return item + " " + "there";
}
var result = setNewArray(arr1);
console.log(result);
答案 4 :(得分:0)
尝试在javascript中使用typeof运算符
var arr1 = [3, "Hello", 5, "Hola"];
function setNewArray(arr, funct1, funct2) {
var arr2 = [];
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] == 'string') {
arr2.push(funct1(arr[i]));
}
if (typeof arr[i] == 'number') {
arr2.push(funct2(arr[i]));
}
}
return arr2;
}
var numfunct = function (item) {
return item * 2;
}
var strfunct = function (item) {
return item + " " + "there";
}
var result = setNewArray(arr1, strfunct, numfunct);
console.log(result);
我认为这是您正在寻找的确切功能。
答案 5 :(得分:0)
问题不在于使用typeof运算符,而是使用number和string调用的函数。
更新的代码:
var arr1 = [3, "Hello", 5, "Hola" ];
function setNewArray(arr, funct1, funct2){
var arr2 = [];
for(var i = 0; i < arr.length; i++){
if(typeof arr[i] == "string"){
arr2.push(
funct2(arr[i]));
}
if(typeof arr[i] == "number"){
arr2.push(
funct1(arr[i]));
}
}
return arr2;
}
var numfunct = function(item){
return item * 2;
}
var strfunct = function(item){
return item + " " + "there";
}
var result = setNewArray(arr1, numfunct, strfunct);
console.log(result);