在Javascript数组中使用indexOf()
我有这样一个数组在Javascript数组中使用indexOf(),javascript,arrays,Javascript,Arrays,我有这样一个数组[HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”]。我从控制台上得到这个 我试图找出下面的值 var sku = skus_colorcode.indexOf('9620'); console.log(sku); 但它正在返回-1 为什么我会得到这个结果 试试这个 function arraySearch(arr,val) { for (va
[HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”]
。我从控制台上得到这个
我试图找出下面的值
var sku = skus_colorcode.indexOf('9620');
console.log(sku);
但它正在返回-1
为什么我会得到这个结果 试试这个
function arraySearch(arr,val) {
for (var key in arr) {
this_val = array[key];
if(this_val == val){
return key;
break;
}
}
}
试试这个
function arraySearch(arr,val) {
for (var key in arr) {
this_val = array[key];
if(this_val == val){
return key;
break;
}
}
}
您的代码根本无效。数组是元素的列表,没有键。 必须使用对象,如下所示:
var skus_colorcode = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"}
要查找对应于“9620”的键(HT…),请尝试以下代码:
var keys = Object.getOwnPropertyNames(skus_colorcode), key;
for(var i = 0; i < keys.length; i++)
if(skus_colorcode[keys[i]] === "9620") {
key = keys[i];
break;
}
// The right key is into the "key" variable
console.log(key); // says "HT2787Z2UK"
var keys=Object.getOwnPropertyNames(skus\u colorcode),key;
对于(变量i=0;i
您的代码根本无效。数组是元素的列表,没有键。
必须使用对象,如下所示:
var skus_colorcode = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"}
要查找对应于“9620”的键(HT…),请尝试以下代码:
var keys = Object.getOwnPropertyNames(skus_colorcode), key;
for(var i = 0; i < keys.length; i++)
if(skus_colorcode[keys[i]] === "9620") {
key = keys[i];
break;
}
// The right key is into the "key" variable
console.log(key); // says "HT2787Z2UK"
var keys=Object.getOwnPropertyNames(skus\u colorcode),key;
对于(变量i=0;i
您可以使用Jquery:
var skus_colorcode = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"}
$.each( skus_colorcode , function( key, value ) {
if(value == '9620')
alert(key);
});
您可以使用Jquery:
var skus_colorcode = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"}
$.each( skus_colorcode , function( key, value ) {
if(value == '9620')
alert(key);
});
这应该是
var obj = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"}
for (var key of obj) {
if (obj[key] == "9620"){
return key;
}
}
return false
这应该是
var obj = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"}
for (var key of obj) {
if (obj[key] == "9620"){
return key;
}
}
return false
我同意“hemnath mouli”代码应该如他所写:
<script type="text/javascript">
keys = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"};
function getIndexOf(obj,value){
var count = 0;
for (var i in obj){
if(obj[i] == value.toString()){
return "index[" + count + "]:" + obj[i] + " = " + i;
//return what you want
}
count ++;
}
}
</script>
键={HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”};
函数getIndexOf(对象,值){
var计数=0;
用于(obj中的var i){
if(obj[i]==value.toString()){
返回“index[“+count+”]:“+obj[i]+”=”+i;
//归还你想要的东西
}
计数++;
}
}
然后你得到了价值观
<script type="text/javascript">
alert(getIndexOf(keys,9621));
</script>
警报(getIndexOf(键,9621));
请您发送一段代码来检索@ClementNerma的值,即使我同意您的看法,但这不是更有效的方法
我只是不想“否决”这个问题
或者,如果要将对象转换为数组:
<script type="text/javascript">
keys = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"};
function obj2Array(obj){
k = [];
for (var i in obj){
k.push(obj[i]);
}
return k;
}
</script>
<script type="text/javascript">
arr = obj2Array(keys);
alert (arr[2]);
</script>
键={HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”};
函数obj数组(obj){
k=[];
用于(obj中的var i){
k、 推(obj[i]);
}
返回k;
}
arr=obj2数组(键);
警报(arr[2]);
@abu abu我同意“hemnath mouli”代码应该如他所写:
<script type="text/javascript">
keys = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"};
function getIndexOf(obj,value){
var count = 0;
for (var i in obj){
if(obj[i] == value.toString()){
return "index[" + count + "]:" + obj[i] + " = " + i;
//return what you want
}
count ++;
}
}
</script>
键={HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”};
函数getIndexOf(对象,值){
var计数=0;
用于(obj中的var i){
if(obj[i]==value.toString()){
返回“index[“+count+”]:“+obj[i]+”=”+i;
//归还你想要的东西
}
计数++;
}
}
然后你得到了价值观
<script type="text/javascript">
alert(getIndexOf(keys,9621));
</script>
警报(getIndexOf(键,9621));
请您发送一段代码来检索@ClementNerma的值,即使我同意您的看法,但这不是更有效的方法
我只是不想“否决”这个问题
或者,如果要将对象转换为数组:
<script type="text/javascript">
keys = {HT2787UK: "9618", HT2787Z1UK: "9619", HT2787Z3UK: "9621", HT2787Z2UK: "9620"};
function obj2Array(obj){
k = [];
for (var i in obj){
k.push(obj[i]);
}
return k;
}
</script>
<script type="text/javascript">
arr = obj2Array(keys);
alert (arr[2]);
</script>
键={HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”};
函数obj数组(obj){
k=[];
用于(obj中的var i){
k、 推(obj[i]);
}
返回k;
}
arr=obj2数组(键);
警报(arr[2]);
@abu abu
.indexOf
只查看数字索引。数组已填充非数字属性,这些属性将被忽略。所以问题是为什么一开始就用这种方式使用数组。那不是数组…这是无效的数组语法。如果您将其修改为一个对象,您可以使用ES6方法来获取键:object.entries(skus\u colorcode).find(a=>a[1]==“9620”)[0]
。我认为OP已经足够清楚地表明,所显示的语法是控制台的输出,不需要将数据表示为有效的JS语法。我认为这一定是一个对象,而不是一个数组.indexOf
只查看数值索引。数组已填充非数字属性,这些属性将被忽略。所以问题是为什么一开始就用这种方式使用数组。那不是数组…这是无效的数组语法。如果您将其修改为一个对象,您可以使用ES6方法来获取键:object.entries(skus\u colorcode).find(a=>a[1]==“9620”)[0]
。我认为OP已经足够清楚地表明,所显示的语法是控制台的输出,不需要将数据表示为有效的JS语法。我认为这一定是一个对象,而不是一个数组!数组可以包含非数字键,并且完全有效。显示的语法不是有效的初始值设定项,但这显然不是OP用于构造数组的实际语法。在我的浏览器(最新版本的Chrome)上,数组导致语法错误“…显示的语法不是有效的初始值设定项,但这显然不是OP用于构造数组的实际语法”var a=[];a、 foo=“bar”;console.log(a.foo);//bar
是的,这种语法有效,但问题中给出的数组无效:[HT2787UK:“9618”、HT2787Z1UK:“9619”、HT2787Z3UK:“9621”、HT2787Z2UK:“9620”],数组只接受数字索引,其他索引必须使用对象。数组可以包含非数字键,并且完全有效。显示的语法不是有效的初始值设定项,但这显然不是OP用于构造数组的实际语法。在我的浏览器(最新版本的Chrome)上,数组导致语法错误“…显示的语法不是有效的初始值设定项,但这显然不是OP用于构造数组的实际语法”var a=[];a、 foo=“bar”;console.log(a.foo);//bar
是的,该语法有效,但给定的数组无效