Ниже были исправлены эта проблема для меня, я пытался создать установку с расширением cython.
#productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
productdir = os.path.join(toolsdir, os.pardir, os.pardir)
Вышеупомянутые шаги исправили проблему для меня.
В эти дни все классные дети выполняют функциональное программирование ( hello React users ), поэтому я думал, что дам функциональное решение. На мой взгляд, это на самом деле намного приятнее, чем предвариантные петли for
и each
, которые были предложены до сих пор, и с синтаксисом ES6 он довольно изящный.
теперь отличный способ сделать это под названием findIndex
, который принимает функцию, возвращающую true
/ false
на основе соответствия элемента массива (как всегда, проверьте совместимость с браузером).
var index = peoples.findIndex(function(person) {
return person.attr1 == "john"
}
С синтаксисом ES6 вы можете написать это:
var index = peoples.findIndex(p => p.attr1 == "john")
Если вы ищете index
, где peoples[index].attr1 == "john"
используют:
var index = peoples.map(function(o) { return o.attr1; }).indexOf("john");
Шаг 1
Используйте .map()
, чтобы получить массив значений, заданных определенным ключом:
var values = object_array.map(function(o) { return o.your_key; });
Вышеприведенная строка выводит вас здесь:
var peoples = [
{ "attr1": "bob", "attr2": "pizza" },
{ "attr1": "john", "attr2": "sushi" },
{ "attr1": "larry", "attr2": "hummus" }
];
К здесь:
var values = [ "bob", "john", "larry" ];
Шаг 2
Теперь мы просто используем .indexOf()
, чтобы найти индекс желаемого ключа (что, конечно, также индекс объекта, который мы ищем):
var index = values.indexOf(your_value);
Решение
Мы комбинируем все вышеперечисленное:
var index = peoples.map(function(o) { return o.attr1; }).indexOf("john");
Или, если вы предпочитаете синтаксис ES6:
var index = peoples.map((o) => o.attr1).indexOf("john");
var peoples = [
{ "attr1": "bob", "attr2": "pizza" },
{ "attr1": "john", "attr2": "sushi" },
{ "attr1": "larry", "attr2": "hummus" }
];
var index = peoples.map(function(o) { return o.attr1; }).indexOf("john");
console.log("index of 'john': " + index);
var index = peoples.map((o) => o.attr1).indexOf("larry");
console.log("index of 'larry': " + index);
var index = peoples.map(function(o) { return o.attr1; }).indexOf("fred");
console.log("index of 'fred': " + index);
var index = peoples.map((o) => o.attr2).indexOf("pizza");
console.log("index of 'pizza' in 'attr2': " + index);
function getIndexByAttribute(list, attr, val){
var result = null;
$.each(list, function(index, item){
if(item[attr].toString() == val.toString()){
result = index;
return false; // breaks the $.each() loop
}
});
return result;
}
Если вы хотите проверить сам объект, не мешая прототипу, используйте hasOwnProperty()
:
var getIndexIfObjWithOwnAttr = function(array, attr, value) {
for(var i = 0; i < array.length; i++) {
if(array[i].hasOwnProperty(attr) && array[i][attr] === value) {
return i;
}
}
return -1;
}
, чтобы включить атрибуты прототипа, используйте:
var getIndexIfObjWithAttr = function(array, attr, value) {
for(var i = 0; i < array.length; i++) {
if(array[i][attr] === value) {
return i;
}
}
return -1;
}
Сделайте так: -
var peoples = [
{ "name": "bob", "dinner": "pizza" },
{ "name": "john", "dinner": "sushi" },
{ "name": "larry", "dinner": "hummus" }
];
$.each(peoples, function(i, val) {
$.each(val, function(key, name) {
if (name === "john")
alert(key + " : " + name);
});
});
name : john
См. LIVE DEMO
Использование jQuery .each ()
$.each(peoples, function(index, obj) {
$.each(obj, function(attr, value) {
console.log( attr + ' == ' + value );
});
});
Использование для цикла :
for(var i = 0; i < peoples.length; i++) {
for(var key in peoples[i] ) {
console.log( key + ' == ' + peoples[i][key]);
}
}