如何使用JavaScript查找数组中的负数索引

时间:2017-07-22 17:08:27

标签: javascript

在这里,我试图在JavaScript中找到数组中负数的索引? 请帮帮忙?

 Case1: var arr=[1,-5,-6,7,8,9,10,-14,6,-7];  

/*---------logic to find index of negative numbers in an array?*/

 console.log();

 Case2: var arr=["1","-3","5","-9","-10","11"]
 /*------logic to find index of negative numbers from array of strings(arr)?*/

console.log();

 Case3: var arr=["1","-3M" ,"2P","-8Q","-10.8%","-$8.00M"]

 /*----------How to find index of "-" in an array of strings----------*/

    console.log()

7 个答案:

答案 0 :(得分:3)

您可以将索引与索引仅映射为负数,然后仅过滤具有有效索引的索引。



var array = [1, -5, -6, 7, 8, 9, 10, -14, 6, -7],
    indices = array
        .map((a, i) => a < 0 ? i : -1)
        .filter(a => a !== -1);

console.log(indices);
&#13;
&#13;
&#13;

对于字符串几乎相同,并检查第一个字符是-

&#13;
&#13;
var array = ["1", "-3M", "2P", "-8Q", "-10.8%", "-$8.00M"],
    indices = array
        .map((a, i) => a[0] === '-' ? i : -1)
        .filter(a => a !== -1);

console.log(indices);
&#13;
&#13;
&#13;

现在使用toString方法解决数字或字符串问题。

&#13;
&#13;
var array = ["1", -3, "2P", "-8Q", "-10.8%", "-$8.00M"],
    indices = array
        .map((a, i) => a.toString()[0] === '-' ? i : -1)
        .filter(a => a !== -1);

console.log(indices);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用 Array.forEach() 循环方法和正则表达式。

这是一个可以处理所有3个场景的函数。

var arr = [1,-5,-6,7,8,9,10,-14,6,-7];
var arr2 = ["1","-3","5","-9","-10","11"];
var arr3 = ["1","-3M" ,"2P","-8Q","-10.8%","-$8.00M"];

function getNegatives(arr){
  var results =[];
  arr.forEach(function(item, index){
    // If item is a string, remove all non-numeric characters and then convert to a number
    var newItem = (typeof item === "string") ? parseFloat(item.replace(/[^-\d\.]/g,'')) : item;
    if(newItem < 0){ results.push(index); }
  });
  console.log(results);
}

getNegatives(arr);
getNegatives(arr2);
getNegatives(arr3);

答案 2 :(得分:0)

您可以使用for循环和if条件来执行此操作。

&#13;
&#13;
var arr = [1,-5,-6,7,8,9,10,-14,6,-7];
var negativeNumbersIndexs = [];
var i; // for the loop
for (i = 0; i < arr.length; i += 1) {
    if (arr[i] < 0){
        negativeNumbersIndexs.push(i)
    }
}

console.log(negativeNumbersIndexs);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

你可以这样使用。

var i;
for(i = 0; i < arr.length; i++) {
  if(arr[i] < 0) {
    console.log("Index " + i);
  }
} 

答案 4 :(得分:0)

试试这段代码。

&#13;
&#13;
var arr = [1,-5,-6,7,8,9,10,-14,6,-7];
for(var i = 0; i < arr.length; i++) {
    if(arr[i] < 0) {
      console.log(arr[i] +  " is at index: " +  i);
    }
}
&#13;
&#13;
&#13;

答案 5 :(得分:0)

var arr=[1,-5,-6,7,8,9,10,-14,6,-7];
var res = arr.reduce( function(out, a, i) {
   return a<0 ? out.concat([i]) : out;
},[]);
console.log( res );

答案 6 :(得分:0)

案例1 :在数组中查找负数索引:

for(var i=0; i < arr.length; i++){
    if(arr[i] < 0){
       console.log(i);
    }
}

Case2 :在字符串数组中查找负数索引:

for(var i=0; i < arr.length; i++){
    if(Number(arr[i]) < 0){
       console.log(i);
    }
}

Case3 :在字符串数组中找到负数“ - ”的索引:

for(var i=0; i < arr.length; i++){
    if(arr[i].charAt(0) === "-"){
       console.log(i);
    }
}

注意: 你可以在case2中使用case3的解决方案,它也可以在两种情况下正常工作。