JavaScript - 获取原始数组中具有相同值的索引数组

时间:2018-02-06 07:22:31

标签: javascript arrays

我有一个数组。例如

var tmp = ["A", "B","B", "A", "B", "B", "A", "A"];

如何使用纯JavaScript从上面的数组获取每个可能值的索引数组。

var A = [0,3,6,7]; //0,3,6,7 are indexes of "A" from the above array
var B = [1,2,4,5]; //1,2,4,5 are indexes of "B" from the above array

谢谢。

4 个答案:

答案 0 :(得分:1)

迭代并将索引推送到相应的数组。

var A = [],
  B = [];
var tmp = ["A", "B", "B", "A", "B", "B", "A", "A"];

tmp.forEach(function(v, i) {
  if (v == 'A') A.push(i);
  else B.push(i);
})

console.log(A, B);

答案 1 :(得分:1)

您可以尝试这样的事情:

逻辑

  • 您可以创建将这些值保存为键的地图,而不是为AB创建单个变量。
  • 现在遍历数组并将索引添加到必要的数组。

注意:使用地图的好处在于您的逻辑变得通用且可扩展。所以你再添加5个字母,你不必再创建5个变量并更新逻辑



var tmp = ["A", "B", "B", "A", "B", "B", "A", "A"];

var result = tmp.reduce(function(acc, item, i) {
  acc[item] = acc[item] || [];
  acc[item].push(i);
  return acc;
}, {})

console.log(result)




答案 2 :(得分:1)

function saveData(var dataid)
var deger = dataid;
 $.ajax({ 
    type: "POST", 
    url: "altgrup_al.php", 
    data: {deger:deger}, 
    success: function(result){ 
      $("#alt_tablo").html(result); 
    }
   });

答案 3 :(得分:1)

查找每个元素的出现次数



var tmp = ["A", "B","B", "A", "B", "B", "A", "A"];
var arr = [];
var temp = [];
for(let i in tmp){
  var indexes = [];
  if(temp.indexOf(tmp[i]) === -1){
    indexes = tmp.map((e, j) => e === tmp[i] ? j : '').filter(String);
    var obj = {};
    obj[tmp[i]] = indexes;
    arr.push(obj);
    temp.push(tmp[i]);
  }
}

console.log(arr);






var tmp = ["A", "B","B", "A", "B", "B", "A", "A"];
var arr = [];
var temp = [];
for(let i in tmp){
  var indexes = [];
  if(temp.indexOf(tmp[i]) === -1){
    indexes = tmp.map((e, j) => e === tmp[i] ? j : '').filter(String);
    temp.push(tmp[i]);
    window[tmp[i]] = indexes;
  }
}

console.log(A);
console.log(B);