#javascript #arrays #json #reactjs #tree
#javascript #массивы #json #reactjs #дерево
Вопрос:
Теперь, прежде чем пометить этот вопрос как дублирующий, выслушайте меня.
у меня есть ответ json в reactjs, который выглядит так
organisationUnits: [
{
name: "0.Mzondo",
id: "nW4j6JDVFGn",
parent: {
id: "Ppx2evDIOFG"
}
},
{
name: "1 Chipho",
id: "eE4p4gXpR4p",
parent: {
id: "JKNTgsOVMOo"
}
}, {}, {}, ....
}]
теперь я искал в сети решение для преобразования списка в дерево, у меня есть много кода от людей, но, похоже, это не работает.
Я тоже пробовал https://github.com/yi-ge/js-tree-list и https://www.npmjs.com/package/list-to-tree а также https://www.npmjs.com/package/array-to-tree
но ничего не работает, я предполагаю, что это потому, что мой родительский идентификатор заключен в круглые скобки. Так что ничего онлайн не работает. Если у кого-нибудь есть решение для этого, мы были бы очень признательны.
Комментарии:
1. почему вы не меняете parent.id родительскому перед использованием этих библиотек
2. Рассматривали ли вы возможность просто написать функцию для этого самостоятельно? Я не думаю, что это потребует таких больших усилий.
3. @evgenifotia Мне искренне жаль, что я тупой …. такая простая идея, и вы сэкономили мне время …. спасибо вам ооочень большое
Ответ №1:
Хорошо для всех тех, кто может застрять в будущем, вот как я решил проблему.
на удивление, я не очень умный, поэтому неправильный выбор карьеры…. далее
var arrayToTree = require('array-to-tree');
var array = [
{
name: "0.Mzondo",
id: "nW4j6JDVFGn",
parent: {
id: "Ppx2evDIOFG"
}
},
{
name: "1 Chipho",
id: "eE4p4gXpR4p",
parent: {
id: "JKNTgsOVMOo"
}
}, {}, {}, ....
}
array.map((item) => {
//
if(item.parent != null){
//console.log(item.parent.id)
item.parent = item.parent.id
} else {
item.parent = undefined
}
});
var tree = arrayToTree(array, {
parentProperty: 'parent',
customID: 'id'
});
console.log( tree );
this.setState({
orgUnits : tree
});
Выполнено.
Большое спасибо всем, кто помог. как на самом деле