我有一个数组。例如
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
谢谢。
答案 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)
您可以尝试这样的事情:
A
和B
创建单个变量。注意:使用地图的好处在于您的逻辑变得通用且可扩展。所以你再添加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);